tomcat Web应用程序的上下文路径,前面是Nginx作为反向代理

时间:2012-05-03 10:25:49

标签: jsp tomcat nginx jstl reverse-proxy

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

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

访问Web应用程序

我的nginx配置为proxy_pass,如下所示:

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

使用此配置,网络应用应该使用网址http://localhost

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

之前有没人修过这个。

非常感谢所有答案。

Ž。

1 个答案:

答案 0 :(得分:3)

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

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

所以问题可以解决:

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

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

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

Ž。