目标是让PHP了解正确的面向web的server_port.
设置是:
端口443上的nginx反向代理端口80上的varnish反向代理端口8008上的nginx并运行php-fpm作为fastcgi.
命中80或443都工作正常,但PHP中的$_SERVER [‘SERVER_PORT’]默认情况下总是显示8008.我可以硬编码fastcgi_param server_port但是它只对80或443正确,但不是两者都正确.
# default
fastcgi_param SERVER_PORT $server_port;
# harcode to 80
fastcgi_param SERVER_PORT 80;
如何才能获得适用于php的面向外部的服务器端口?
最佳答案
找到了我自己的答案
在SSL nginx中,这……
proxy_set_header X-Forwarded-Proto https;
然后在清漆中,这……
sub vcl_recv {
if (req.http.X-Forwarded-Proto == "https" ) {
set req.http.X-Forwarded-Port = "443";
} else {
set req.http.X-Forwarded-Port = "80";
set req.http.X-Forwarded-Proto = "http";
}
}
然后在最后的nginx中,这……
fastcgi_param SERVER_PORT $http_x_forwarded_port;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。