基于$ hostname的nginx server_name

基于nginx维基的$ hostnamevariables是“设置为由gethostname返回的机器主机名”。 我试过,虽然gethostname不工作我的debian框仍然正确返回主机。 然后我试图使用该variables$主机名来设置server_name ,但没有奏效。 为什么是这样,还有另一种方法,我可以做到这一点。

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

nginx中的大多数variables只在运行时存在,而不是在configuration期间。 为此,大多数variables不能与server_name指令一起使用。 由于$ hostname是一个常量值,因此在server_name处理程序中显式检查$ hostname。 它只允许将server_name设置为$ hostname,而不是static。$ hostname。 您可能会修补源代码以使其支持该function(ngx_http_core_module.c,查找$ hostname),但您无法使用现有代码进行此操作。

你应该find这个作品:

 server_name static.*;