【问题标题】:JBoss served application - using apache proxypass session is not accessibleJBoss 服务的应用程序 - 无法访问使用 apache proxypass 会话
【发布时间】:2012-04-24 21:47:55
【问题描述】:

我遇到了一个奇怪的(对我而言)JBoss 提供的 java 应用程序的情况。

--背景--

1) JBoss 安装在 Linux 环境中。

为了方便说明,我的环境的IP地址是:99.999.999.99

2) 在环境中,我让 JBoss 运行在:http://127.0.0.1:8080

有几个应用程序可以通过以下方式访问:http://127.0.0.1:8080/APPLICATION_NAME

3) 我有 apache 将流量路由到我的 IP 地址,如下所示:

ProxyPass / http://127.0.0.1:8080/app1/
ProxyPassReverse / http://127.0.0.1:8080/app1/

ProxyPass /app2/ http://127.0.0.1:8080/app2/
ProxyPassReverse /app2/ http://127.0.0.1:8080/app2/

ProxyPass /app3/ http://127.0.0.1:8080/app3/
ProxyPassReverse /app3/ http://127.0.0.1:8080/app3/

4) 当我访问 99.999.999.99 时,我可以访问 app1,它按预期运行(以下问题除外)。

当我访问 99.999.999.99/app2 时,我可以访问 app2。

--问题--

1) 在 app1 内部,我有一个写入会话的 jsp 页面:

_sessionTest1.jsp session.setAttribute("test", "test");

2) 问题是在运行这个 JSP 之后,会话将不包含设置的数据。

3) 如果我删除 apache 代理,而是公开 JBoss 根,同时 管理链接和 JMX 控制台,会话将按预期更新。

以这种方式配置时,我访问应用程序的方式是:

99.999.999.99/app1

99.999.999.99 将显示我的 JBoss 根目录。

4) 如果如上配置,是否预计应用程序的会话将无法访问?

谢谢!

【问题讨论】:

    标签: java apache session jboss proxypass


    【解决方案1】:

    原来问题在于需要将 apache 配置为从 cookie 中查找会话信息,而不是默认的 URL。

    【讨论】:

      【解决方案2】:

      我在使用 Apache 代理 Jetty 时遇到了同样的问题。规则是:

      ProxyPass /myapp http://localhost:8080
      ProxyPassReverse /myapp http://localhost:8080
      

      代理 https://myhost/myapphttp://localhost:8080。这通常有效,但 myapp 中的会话在请求之间未保留。添加以下规则修复它:

      ProxyPassReverseCookiePath / /myapp
      

      【讨论】:

        【解决方案3】:

        我相信您的第一份代理声明实际上应该是您的最后一份。 Apache 将在与 URL 匹配的第一条规则处停止,因此您通过 Web 服务器的所有请求都使用通用 / 捕获规则 1。

        ProxyPass /app1/ http://127.0.0.1:8080/app1/
        ProxyPassReverse /app1/ http://127.0.0.1:8080/app1/
        
        ProxyPass /app2/ http://127.0.0.1:8080/app2/
        ProxyPassReverse /app2/ http://127.0.0.1:8080/app2/
        
        ProxyPass /app3/ http://127.0.0.1:8080/app3/
        ProxyPassReverse /app3/ http://127.0.0.1:8080/app3/
        
        ProxyPass / http://127.0.0.1:8080/app1/
        ProxyPassReverse / http://127.0.0.1:8080/app1/
        

        【讨论】:

        • 谢谢,你说得对。我实际上是最后一个,但把它放在解释的首位,试图让它更清楚。
        猜你喜欢
        • 2020-11-22
        • 2012-01-30
        • 1970-01-01
        • 1970-01-01
        • 2015-08-08
        • 2014-12-15
        • 1970-01-01
        • 2014-02-24
        • 1970-01-01
        相关资源
        最近更新 更多