Expressões regulares em server_name com Niganx vhost

4

Eu tenho algo que estou tentando fazer com o Nginx. Digamos que eu tenha alguns usuários e um subdomínio, e cada usuário tenha um diretório em /home/dev/sites/USER_ID . Eu gostaria que USER_ID.dev.example.com apontasse para esse diretório.

Eu tentei criar um arquivo vhost da seguinte forma:

server {
    listen   80;
    server_name ~^(?<site_id>)$.dev.example.com;
    root   /home/dev/sites/$site_id;
    index  index.php;

    location / {
        try_files $uri $uri/ /index.php?$uri&$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

No entanto, tudo o que está acontecendo é que está mostrando a instalação do PhpMyAdmin que eu tenho (obviamente outro vhost está apontando para lá). Alguém pode me dizer o que estou fazendo errado? Eu tenho a sensação de que é apenas ruim Regex, mas não tenho certeza.

    
por SharkofMirkwood 19.07.2013 / 21:32

1 resposta

9

Essa expressão nunca será igual, pois $ está no meio da string. Experimente:

server_name ~^(?<site_id>.+)\.dev\.example\.com$;
    
por 19.07.2013 / 21:38