用Nginx作为反向代理的Tomcat Web应用程序前端的上下文路径

5
我正在尝试在Nginx前端部署Tomcat服务器上的Web应用程序。 我遇到的问题是,我的JSP页面中的标签打印出“不正确”的(从Tomcat的角度来看是正确的)上下文路径。
我的Tomcat Web应用程序部署在上下文路径/webApp1,Tomcat运行在端口8080上。 因此,可以通过http://localhost:8080/webApp1访问Web应用程序。
我的Nginx配置为proxy_pass如下:
location / {
    http://localhost:8080/webApp1;
}

使用这个配置,Web应用程序应该与http://localhost的URL一起工作。

这只对主页文本有效。首页成功加载,但所有链接都有/webApp1的前缀,因为Tomcat认为它正在独立运行,因此输出上下文路径作为所有链接的前缀。

有人之前解决过这个问题吗?

非常感谢您的回答。

z.

1个回答

4

我花费了很多时间,终于解决了这个问题。

对于nginx,有一个第三方模块HttpSubsModule,它可以替换响应体(例如html)中的字符串。

因此,可以通过以下方式解决问题:

location / {
    http://localhost:8080/webApp1;
    subs_filter_types text/html;
    subs_filter '/webApp1' '';
}

它将从HTML响应中删除所有上下文'/webApp1'。希望这可以帮助遇到此问题的其他人。z.

1
一个副作用是,除了URL之外,任何包含contextpath的文本也将被替换。:/ - Ruben Trancoso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接