【问题标题】:how to set java web application's context root when working with reverse proxy使用反向代理时如何设置 Java Web 应用程序的上下文根
【发布时间】:2012-02-01 05:47:34
【问题描述】:
  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 一种。由于页眉/页脚是共享的,并且主页与详细信息页面处于不同的级别,因此使用相对路径很不方便,因为它们处于不同的级别 湾。不过,我认为主页链接必须是 //

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

非常感谢

【问题讨论】:

    标签: java apache reverse-proxy contextroot


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨,谢谢回复;问题: 1.你如何指定你的css链接和home链接? 2. 如何在 apache config 中指定反向代理设置?谢谢。
    • 我通常添加一个带有静态方法的 Helper 类,该方法返回一个配置参数,我把它放在一个 .properties 文件中,所以对你的 css 的引用可能是:/css/styles.css,在getBasePath方法中可以读取属性、环境、db等。
    • 您是否在反向代理配置中设置了此项? ProxyPass / localhost:800/mywebapp,
    猜你喜欢
    • 2015-04-18
    • 1970-01-01
    • 2021-07-14
    • 2012-07-08
    • 2021-03-21
    • 2018-12-28
    • 2012-08-20
    • 2019-08-17
    • 2012-05-12
    相关资源
    最近更新 更多