【问题标题】:Context path for tomcat web application fronted with Nginx as reverse proxy使用 Nginx 作为反向代理的 tomcat Web 应用程序前端的上下文路径
【发布时间】:2012-05-12 20:33:12
【问题描述】:

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

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

我的nginx配置为proxy_pass如下:

location / {
    http://localhost:8080/webApp1;
}

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

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

以前有没有人解决过这个问题。

非常感谢所有答案。

z.

【问题讨论】:

    标签: jsp tomcat nginx jstl reverse-proxy


    【解决方案1】:

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

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

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

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

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

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

    z.

    【讨论】:

    • 一个副作用是与 url 一起,任何包含 contextpath 的文本也将被替换:/
    猜你喜欢
    • 2013-07-16
    • 2019-08-05
    • 2018-03-18
    • 2018-01-20
    • 2017-04-12
    • 1970-01-01
    • 2019-05-27
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多