Nginx server_name regexp not working as variable

configuration, http, nginx, regex

Solution

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>[^\.]*)$;

Problem

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 / { ... ```

Original source