1
  1. 我在 apache 中使用 mod_jk 并在 tomcat 中配置虚拟主机的旧方法在 JSP 文件中,我引用 CSS 如下

    /<%=request.getContextPath()%>/css/styles.css

当主页链接设置为

/<%=request.getContextPath()%>/

因此,当我在 apache 中使用 mod_jk 使用 ajp 与 tomcat 一起工作时,这工作正常;

  1. 当我尝试如下配置反向代理时

ProxyPass / http://localhost:800/mywebapp

ProxyPassReverse / http://localhost:800/mywebapp

主页可以正常检索,但css请求变为 http://mydomain.com/mywebapp/mywebapp/css/style.css ,因此无法正确检索css文件;

  1. 我认为一种可能的方法是始终使用 ./style.css 或 ../style.css 之类的相对路径。由于页眉/页脚是共享的,并且主页与详细信息页面处于不同的级别,因此使用相对路径不方便,因为它们处于不同的级别 b。不过,我认为主页链接必须是 /<%=request.getContextPath()%>/

所以我想知道在java web中设置contextroot的方法是什么,并且在反向代理中也可以正常工作?

多谢

4

1 回答 1

0

据我所知,您的应用程序服务器(Tomcat)无法知道反向代理的存在。一般来说,可以通过任意数量的反向代理或浏览器直接联系它。通常使用网络配置来限制这一点,而不是 HTTP 或 Java。

因此,您必须准确地依赖相对 URL 才能使您的应用程序正常运行。

当我必须处理反向代理存在时(几乎总是由于 SSO 架构),我嵌入了一个“联结”配置字符串项(代理中用于映射应用程序的 URL 部分)并在唯一的地方使用它我需要建立一个绝对 URL。

于 2012-01-03T08:31:22.880 回答