基于 $hostname 的 nginx server_name

基于 $hostname 的 nginx server_name

根据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是常量值,因此需要明确检查确切地 $hostnameserver_name处理程序中。

它只允许将server_name设置为$hostname,而不是static.$hostname。您可能能够修补源代码以使其支持该功能(ngx_http_core_module.c,查找$hostname),但您无法使用现有代码来做到这一点。

答案2

你应该发现这个作品:

server_name static.*;

相关内容