我的配置文件中有这一行
server_name site.com m.site.com
我的代码会检查 URL 是否为移动版本m.site.com
,并提供移动版本。但是当我这样做时,m.site.com/abc
将显示我的代码site.com/abc
,这是错误的。如果我复制/粘贴整个块并将 site.com 更改为 m.site.com,它就可以正常工作。但我宁愿没有重复的配置(或代码)。
有没有解决的办法?
答案1
答案2
您有两个选择:
1)nginx 的配置块有“重复”
2)让您的网站检测服务器名称(在 PHP 中,$_SERVER['SERVER_NAME'] 或 $_SERVER['HTTP_HOST'])并根据其内容提供不同的网站。
答案3
如果您使用 nginx 作为反向代理,请尝试在指令proxy_set_header
附近添加指令proxy_pass
,如下所示:
proxy_pass http://my.asp.net.hostname:8000;
proxy_set_header Host $http_host;
这确保 nginx 逐字传递 Host 标头,而不是采用主 server_name。