Назад | Перейти на главную страницу

Регулярные выражения в server_name с Nginx vhost

Я кое-что пытаюсь сделать с Nginx. Скажем, у меня есть несколько пользователей и поддомен, и у каждого пользователя есть каталог в /home/dev/sites/USER_ID. Я бы хотел USER_ID.dev.example.com чтобы указать на этот каталог.

Я пробовал создавать файлы vhost следующим образом:

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;
    }
}

Однако все, что происходит, это то, что он показывает установку PhpMyAdmin, которая у меня есть (очевидно, другой vhost указывает на нее). Может кто подскажет, что я делаю не так? У меня такое чувство, что это просто плохое Regex, но я не уверен.

Это выражение никогда не будет совпадать, поскольку $ находится в середине строки. Пытаться:

server_name ~^(?<site_id>.+)\.dev\.example\.com$;