nginx反向代理后面的服务器忽略URL中的相对路径
我的头衔并不是最好的,我对网络的了解非常基础,对不起. 我想要实现的目标 我有一个在Archlinux上运行nginx的盒子风箱,我用它作为我的家庭局域网的主要入口点从互联网(即工作,我只能到达端口80和443)通过反向代理设施使用不断变化的域名我无法控制,我们现在会打电话给home.net. fanbox的端口80和443映射到home.net,这部分很容易. 我在防火墙后面有两个web服务器,web1.lan,web2.lan,web2ilo.lan.这两个应用程序都有各种应用程序(可能在不同的机器上具有相同的名称),可以通过标准URL直接在LAN上访问(名称作为示例给出,我无法控制内容):
…等等… 现在web2ilo.lan就是一个特例.它是HP服务器web2.lan的带外管理Web界面.该特定网络服务器仅提供1个应用程序,因此只能通过其根URL访问:
我的目标是通过home.net的子路径访问这些,如下所示:
我的问题 这几乎可以工作,但Web应用程序倾向于重写URL,以便在我登录后分别:
浏览器分别重定向到
请注意,相对子路径web1和web2ilo已经消失了,逻辑上给了我404. 我的配置 到目前为止,我已经搜索了很多,我在nginx中尝试了很多选项而不太了解我在做什么.这是我的配置,重现了这个问题.为了清楚起见,我已经离开了SSL.
在第一个答案后 在第一个答案之后(谢谢!),我意识到我的设置远非常见,而且我可能会独自遇到麻烦. 那么在不触及前端端口和域/主机名的情况下访问防火墙后面的网络服务器会更好吗? 最佳答案
您可能希望考虑使用设置proxy_redirect让nginx知道它应该将“后端”服务器响应头(位置和刷新)修改为适当的前端URL.您可以使用默认设置来允许nginx根据您的位置和proxy_pass指令计算适当的值,或者显式指定如下的映射:
见:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect 注意:这仅影响响应标头 – 不包括HTML内容中的任何链接或任何Javascript. 如果您遇到内容或Javascript中的链接问题,您可以修改后端服务器上的内容(您可能无法指定),或者调整代理解决方案,使前端路径与后端相同一些(例如,而不是http:// frontend / web1 / phpAdmin你只需要http:// frontend / phpAdmin).这将需要为每个应用程序添加位置指令,例如,
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |