JBoss服务应用程序 - 使用apache proxypass会话无法访问

时间:2012-04-12 14:16:44

标签: java apache session jboss proxypass

我遇到了一个由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 root 管理链接和JMX控制台,会话将按预期更新。

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

99.999.999.99/app1

99.999.999.99将显示我的JBoss root。

4) 如果按上述配置,是否应该无法访问应用程序的会话?

谢谢!

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

https://myhost/myapp代理到http://localhost:8080。这一般起作用,但myapp中的会话未在请求之间保留。添加以下规则修复了它:

ProxyPassReverseCookiePath / /myapp

答案 2 :(得分:0)

我相信你的第一个代理声明实际上应该是你的最后一个。 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/