我有一个反向代理设置,用于从Internet访问位于Intranet内的第三方应用程序。假设此应用程序位于URL上:
https://internalserver:8080/
(仅可从Intranet访问)
并且代理处于开启状态:
https://proxyserver/
(可从世界任何地方到达)
该代理由nginx管理,并且可以正常工作。当用户访问时,https://proxyserver/
他们会在处获得应用程序的内容https://internalserver:8080/
。
问题在于应用程序正在HTML响应中写入绝对URL,因此,当用户单击指向新页面的链接时,浏览器将尝试使用其内部名称(例如https://internalserver:8080/somepage
而不是)
来定位该页面
https://proxyserver/somepage
。
我知道这是一个程序错误,但是我无法修改该程序。
我可以使用Nginx拦截响应,修改URL并将其发送(修改)给最终客户端吗?也许还有其他工具?
编辑:我之前看到过此问题,但我的情况更具体,引用的问题要求进行一般性修改。在那种情况下,fast-cgi ad hoc程序是最好的解决方案,我想要的是针对(我认为)更常见情况的一种更具体的解决方案。虽然快速cgi程序可以工作,但我正在寻找一种最简单,可能更强大的方法,并在现实世界中证明了这种情况的解决方案。