Nginx server_name regexp not working as variable

2019-07-04 05:13发布

问题:

Is there anybody who tell me why i still got error like this?

Restarting nginx: [emerg]: unknown "domain_name" variable
configuration file /etc/nginx/nginx.conf test failed

the part of code where is variable looks like:

server {
    # if you're running multiple servers, instead of "default" you should
    # put your main domain name here
    listen 80 default;

    # you could put a list of other domain names this application answers
    server_name ^~(?<domain_name>[^\.]*)\.(?<tld>[^\.]*)$;

    # root defined by domain
    root /home/deployer/apps/$domain_name/current/;

    # access && error && rewrite log
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    rewrite_log on;

    # default location
    location / {

...

回答1:

Remove the "^". From

server_name ^~(?<domain_name>[^\.]*)\.(?<tld>[^\.]*)$;

To

server_name ~(?<domain_name>[^\.]*)\.(?<tld>[^\.]*)$;

Or switch "^" and "~". The letter "~" must be the first one.

server_name ~^(?<domain_name>[^\.]*)\.(?<tld>[^\.]*)$;