Skip to main content
 首页 » 编程设计

redirect之NGINX 始终重定向到本地主机和端口

2024年08月06日10haluo1

我有一个 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 文档: