
环境: 使用 frp 内网穿透,公网服务器端口是 1485 在公网服务器 /etc/hosts 写入 www.xxx.com 127.0.0.1
Nginx 配置:
location = / { proxy_pass http://www.xxx.com:1485/index/index; proxy_set_header Accept-Encoding ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_hide_header X-Powered-By; proxy_set_header Connection "upgrade"; proxy_set_header Upgrade $http_upgrade; proxy_set_header X-Forwarded-Proto https; } location / { proxy_pass http://www.xxx.com:1485; proxy_set_header Accept-Encoding ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_hide_header X-Powered-By; proxy_set_header Connection "upgrade"; proxy_set_header Upgrade $http_upgrade; proxy_set_header X-Forwarded-Proto https; } 网站运行 https,功能一切正常。
今天在调用微信 api 扫码登录时候,微信二维码死活不显示。
就开始排查,最终发现是
在 location = / 中的
proxy_set_header X-Forwarded-Proto https; 这个导致的。如果把这句注释掉,微信扫码登录二维码就能显示,否则一直在不停请求微信 api ,返回状态码 204 。
为什么会这样??有大佬了解的吗?