JBoss 4.2.3的SSLredirect问题,Apache mod_jk和硬件负载平衡器

目前我们正在使用目前尚未使用的networking设置,遇到一些问题,希望能得到更多的关于如何解决这个问题的build议。

我们客户的networking在不同服务器上使用4个JBoss实例,所有服务器都运行相同版本的软件。 他们共享一个共同的数据库 ,并根据需要运行。 该软件正在工作并准备使用 。 我们不复制会话 – 每个JBosspipe理自己的会话池。

4个JBoss实例分成2个不同的部分 ,每个部分有2个JBoss。 为了简单的负载均衡,使用mod_jk使用2个不同的Apache Web服务器路由每个段。 使用的连接器是JBoss和Apache服务器之间的AJP

两个Apache Web服务器都连接到一个硬件负载平衡器/路由器 (我们的客户目前不太清楚),它将内部请求( 内部网 )路由到另一个Web服务器的外部请求( 互联网 )。 所以我们有一个内部部分,另外一个部分是外部用户。

客户端通过浏览器使用SSLencryption的HTTP连接 – 这是一个Web应用程序。 SSLencryption由硬件负载平衡器终止 。 硬件负载平衡器和2个Web服务器之间的通道是HTTP( 不再有SSL )。

问题:

在行结束时,JBoss不知道任何SSL / HTTP通信,因此使用完整的http://地址而不是https://呈现一些302redirect 。 另一端的客户端浏览器从https://从最初用于连接到web应用程序的http://切换到https://在来自JBoss的302redirect的情况下。

我们的scheme:

我们提供了两个解决scheme。 一个是最后一个简单的重写规则 – 硬件负载平衡器 – 将所有http://stream量重写为https://。 这将工作,并保持客户端连接,但它被我们的客户拒绝,因为它不寻常的,没有解决最初的问题。

另一种解决scheme是将SSLencryption扩展到Web服务器,而不能通过AJP将安全标志信令SSL通信转发给JBoss,JBoss会select并redirect。 由于内部安全问题和指导方针,此解决scheme被拒绝。

还有什么?

所以我们目前陷入困境,前线变得僵硬。 我们的解决scheme是否有其他select?

另一个选项应该是使用Apache中的mod_headers来修改位置响应头:

Header edit Location ^http:(.*)$ https:$1 

假设他们需要处理http和httpsstream量,你可以尝试另外build议下列其中一项:

1)他们可以添加一个特定的头部到来自负载均衡器的请求,通过https,以便jboss实例知道它最初是一个https请求。

2)你可以build议https请求被发送到apache的不同端口(比如说8080甚至443,但是没有encryption),以便apache知道他们来自https。

我们有同样的探索。 解决scheme是在JBoss / Tomcat的AJP连接器上设置“scheme”和“secure”属性。 将scheme设置为https并将其设置为true,以便Web容器知道在前端使用哪个协议。 如果您同时使用http和https,请为https设置第二个连接器,并使用Apache vhost和不同的ajp设置进行连接。 也许你还必须设置proxyName属性。