使用反向代理和具有静态链接的应用程序服务器进行协议切换

使用反向代理和具有静态链接的应用程序服务器进行协议切换

这真是让我很头疼啊!

首先,有一个可以更有效地解释此事的模式:

  ------WWW / Internet--||-------------Intranet---------------

  +----------+            +----------+    HTTP    +----------+
  |          |            |  SSL     | ---------> |  Web  3. |
  |  Client  |     1.     |  reverse |     2.     |  App     |
  |          | ---------> |  Proxy   |            |  Server  |
  +----------+   HTTPS    +----------+            +----------+
  1. 客户端通过 SSL 请求反向代理。
  2. 反向代理将协议切换为http并转发请求数据包(ProxyPreserveHost开启)
  3. 应用服务器根据请求标头“主机”变量生成静态链接。使用 FQDN 和协议 (http://FQDN.tld:80/etc):-( 您知道当我摆弄标头主机变量时应用服务器会回答什么……(错误请求)
  4. 之后,反向代理通过 SSL 将响应发送给客户端。
  5. 客户端自然会通过 http 请求所有链接的图像和样式表。此请求会询问反向代理,但会被置若罔闻。

解决方案不是欢迎:

  • 内联网内的 SSL(安全性、性能和较少的调试选项)
  • Appserver 不可修改(不可讨论)
  • mod_proxy_html(表现,DOM解析器破坏了许多JS)
  • Internet 区域不允许 http 通信(安全

一切正常,只有协议切换会给静态链接带来麻烦。重定向由 ProxyPassReverse 管理,但这不会影响静态链接。

我该如何管理静态链接通过 https?
如果可以删除协议和附加的端口号就足够了!

是否有人需要更多信息我会在这里提供:

代理是 apache 2.2.17!
AppServer 是 jboss 和 tomcat 5.5!

非常感谢亨德里克

答案1

在server.xml中设置proxyName和proxyPort,将scheme设置为“https”。参见:http://tomcat.apache.org/tomcat-5.5-doc/config/http.html

相关内容