我有一个 NGINX 代理服务器,它反向代理在某个端口上运行的本地 NGINX 服务器。我是 希望这一切都保存在同一个域中,这样对于访问者来说看起来是无缝的。像这样的事情
http://example.com/foo/bar.html ===> http://127.0.0.1:1280/bar.html
如果我故意触发文件未找到错误,则效果很好,例如
http://example.com/foo/this-file-doesnt-really-exist-on-server.html
它会按预期通过并停留在该地址。但是,如果我导航到确实存在的文件,例如
http://example.com/foo/bar.html
浏览器被重定向到
http://127.0.0.1:1280/bar.html
由于该服务器仅监听本地主机,因此浏览器会启动“未找到页面”(404) 错误
这让我感到困惑,我已经尝试了所有方法,我在 Google 上搜索了一个多星期,尝试了数百种解决方案,但没有任何成功或根本改变,我尝试了这些 header 的数十种组合
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
并尝试了数十种不同的代理重定向,包括完全禁用代理重定向
proxy_redirect http://127.0.0.1:1285/ http://example.com/foo/;
或
proxy_redirect off;
我几乎要放弃了,并认为这在 NGINX 中是完全不可能的,如果有人有任何帮助,我将不胜感激
请您参考如下方法:
我认为您正在寻找proxy_pass,而不是proxy_redirect:
location / {
# include your proxy params
# ...
proxy_pass http://localhost:1280;
}
请参阅有关此内容的 nginx 文档: