我在以下配置下运行 WordPress:
Varnish(端口 80)-> nginx(端口 8080)
一切都运行良好,除非某些插件或其他插件尝试使用 获取我的服务器名称$_SERVER['SERVER_NAME']
。当发生这种情况时,它会返回_:8080
我的服务器名称和端口。这是 nginx 配置的内容:
server {
listen 8080;
server_name _;
我需要它返回的是域名.com但是如果我更改 nginx 配置,显然它会停止监听需要的端口 (8080)(但更改 server_name 可以正常工作)。
我怎样才能让 nginx 监听 8080 但返回$_SERVER['SERVER_NAME']
正确的端口(或者更确切地说,不附加错误的端口)?
答案1
_:8080
是在此配置中,的正确值$_SERVER['SERVER_NAME']
。它明确定义为返回 的值server_name
。从文档:
当前脚本正在执行的服务器主机的名称。如果脚本在虚拟主机上运行,则这将是为该虚拟主机定义的值。
听起来您正在寻找$_SERVER['HTTP_HOST']
。请注意,您还需要配置 Varnish 来更改Host:
请求标头。
答案2
$_SERVER['SERVER_NAME']
您可以通过添加fastcgi_param
指令来覆盖默认值后该include fastcgi_params;
声明。
例如:
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SERVER_NAME $http_host;
...
}
包含文件中定义的值将被悄悄地用 的值覆盖$http_host
。