Nginx: regex no server_name

Português

Pequena dica para utilizar expressões regulares na diretiva server_name do Nginx.

Usando um diretório específico para cada subdomínio:

1
2
3
4
5
server {
    listen 80;
    server_name ~^(.*)\.project\.com$;
    root /home/www/project/$1;
}

Definindo uma variável de ambiente em um projeto único:

1
2
3
4
5
6
server {
    listen 80;
    server_name ~^(.*)\.project\.com$;
    fastcgi_param CUSTOMER $1;
    root /home/www/project;
}

Você também pode utilizar a expressão para o domínio todo:

1
2
3
4
5
server {
    listen 80;
    server_name ~^(.*)\.(.*\..*)$;
    root /home/www/$2/subdomains/$1/public_html;
}

Testado no Nginx 1.4.x.