根据Nginx 维基百科变量$hostname
是设置为 gethostname 返回的机器主机名。
我试过了,虽然gethostname
我的 Debian 机器不能正常工作,但它仍然能正确返回主机。然后我尝试使用该变量$hostname
来设置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;
}
答案1
nginx 中的大多数变量仅在运行时存在,而不是在配置时存在。
因此,大多数变量不能与该server_name
指令一起使用。由于$hostname
是常量值,因此需要明确检查确切地 $hostname
在server_name
处理程序中。
它只允许将server_name
设置为$hostname
,而不是static.$hostname
。您可能能够修补源代码以使其支持该功能(ngx_http_core_module.c
,查找$hostname
),但您无法使用现有代码来做到这一点。
答案2
你应该发现这个作品:
server_name static.*;