nginx server_name based on $hostname
Based on the Nginx wiki the $hostname
variable is set to the machine's hostname as returned by gethostname.
I tried that and although gethostname
doesn't work my Debian box it still returns the host correctly.
Then I tried to use that variable $hostname
to set the server_name
, but that didn't work.
Why is that and is there another way I can accomplish that?
server {
listen 80;
autoindex off;
server_name static.$hostname;
root /var/www/static;
access_log /var/log/nginx/localhost.access.log;
location / {
index index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
}
Most variables in nginx only exist at runtime, not during configuration time.
For this reason, most variables cannot be used with the server_name
directive. Since $hostname
is a constant value, there's an explicit check for exactly $hostname
in the server_name
handler.
It only allows for the server_name
to be set to $hostname
, not static.$hostname
. You may be able to patch the source to make it support that feature (ngx_http_core_module.c
, look for $hostname
), but you can't do it with the existing code.