以 Nginx 作为反向代理的 tomcat Web 应用程序的上下文路径

zho*_*hou 5 jsp tomcat reverse-proxy jstl nginx

我正在尝试在以 Nginx 为前端的 tomcat 服务器上部署一个 Web 应用程序。我遇到的问题是我的jsp页面中的标签打印出“不正确”(从tomcat的角度来看是正确的)上下文路径。

我在 tomcat 上的 Web 应用程序部署在上下文路径:/webApp1 上,tomcat 在端口 8080 上运行。因此可以通过http://localhost:8080/webApp1访问该 Web 应用程序

我的nginx配置为proxy_pass如下:

location / {
    http://localhost:8080/webApp1;
}
Run Code Online (Sandbox Code Playgroud)

通过此配置,Web 应用程序应该使用 url http://localhost

这仅适用于主页文本。主页加载成功,但主页上的所有链接都有 /webApp1 前缀,因为 tomcat 认为它正在自行运行,因此输出 contextpath 作为所有链接的前缀。

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

非常感谢所有答案。

z。

zho*_*hou 4

我花了很多时间后设法解决了这个问题。

nginx HttpSubsModule有一个第三方模块,它允许您替换响应正文中的字符串(例如 html)。

所以问题可以通过以下方式解决:

location / {
    http://localhost:8080/webApp1;
    subs_filter_types text/html;
    subs_filter '/webApp1' '';
}
Run Code Online (Sandbox Code Playgroud)

它将从 html 响应中删除所有上下文“/webApp1”。

希望这可以帮助其他也遇到此问题的人。

z。