温馨提示:
本文所述内容不具普遍性,可能因操作环境差异而与实际有所出入,故请勿照搬照抄,仅供参考。
一、场景
使用 A 服务器的 80 端口作为入口,来访问 B 服务器的 443 端口上的网站;其中,反代代码如下:
二、问题
访问 A 服务器的 80 端口,任何链接都报 404 Not Found 错误;
三、分析
这个问题的原因是,A 服务器上的 Nginx 反代时,入口是 HTTP
,端口为 80
,默认传递到 B 服务器上 Host
以及 Port
,就变成了 server_name
里的 Host
,Port
就变成了 80
,即 B 服务器真正要去访问的应该是 https://api.openai.com
,但是接收到的头部信息却是 Host: _:80
,两边不一致,导致了这个错误。
四、方案
改善后,配置如下:
这里的 $proxy_host
就是上面 proxy_pass
里的地址,$proxy_port
就是 proxy_pass
里的端口(https 默认是 443)。
改好后重启 Nginx 服务,问题解决。
原文:
https://vircloud.net/build/nginx-proxy-404-no-found.html