加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

通过nginx和varnish获得正确的SERVER_PORT到php-fpm

发布时间:2020-12-13 21:40:37 所属栏目:Nginx 来源:网络整理
导读:目标是让PHP了解正确的面向web的server_port. 设置是: 端口443上的nginx反向代理端口80上的varnish反向代理端口8008上的nginx并运行php-fpm作为fastcgi. 命中80或443都工作正常,但PHP中的$_SERVER [SERVER_PORT]默认情况下总是显示8008.我可以硬编码fastcgi

目标是让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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读