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

标签 jsp tomcat nginx jstl reverse-proxy

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

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

我的nginx配置为proxy_pass如下:

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

使用此配置,网络应用程序应该使用 url http://localhost

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

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

非常感谢所有答案。

z.

最佳答案

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

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

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

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

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

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

z.

关于jsp - 以 Nginx 作为反向代理的 tomcat Web 应用程序前端的上下文路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10429487/

相关文章:

java - bean :message in Struts 1. 3 中的动态键

java - 在 jasper JSP (tomcat) 中打印 ""而不是 "null"

java - 部署到 Web 容器、捆绑 Web 容器或嵌入 Web 容器

java - Spring Initializr 为 tomcat 创建 WAR?

caching - Nginx 缓存 : tag-based cache-busting like Varnish Hashtwo

tomcat - Nginx - 如何从 header 中获取值并将其设置到 cookie 中?

Javascript 文本字段验证 ||资金投入

java - 使用 Apache Tomcat 将上传的静态文件存储在何处

java - Azure WebApp - Tomcat 关闭

javascript - 我需要nodejs还是只能依赖Nginx?