2

我们已经将 Apache 设置为普通 http jboss(tomcat) 的 ssl 前端

<VirtualHost *:5555>
    ServerName my.server.com

    SSLEngine on
    SSLCertificateFile /x.crt
    SSLCertificateKeyFile /x.pem
    SSLProxyEngine on
    ...
    ...
    ProxyPass / http://my.server:8080/
    ProxyPassReverse / http://my.server.com:8080/
</VirtualHost>

在我们的jsp中,我们有这样的东西:

<link href="/css/my.css" rel="stylesheet" type="text/css">

当我们从

https://my.server.com:5555

告诉我们这个页面的浏览器有不安全的内容,因为它会从

http://my.server.com:5555/css/my.css

我不想在 href 中使用绝对 URL。我可以以某种方式告诉tomcat使用来自apache的https而不在tomcat中设置ssl吗?或者是在 Apache 和 Tomcat 中设置 ssl 的最佳组合?

我已经尝试了 Dirk 指出的解决方案,但它仍然无法正常工作。

服务器.xml

<Connector port="8080" protocol="HTTP/1.1" enableLookups="false" proxyPort="5555" scheme="https" secure="true" />

我仍然收到有关不安全内容的错误。是因为 struts 1.1 没有使用 request.getScheme() 还是因为 Apache 和 Tomcat 之间的通信是纯 http 和 Apache 认为

<link href="/css/my.css" rel="stylesheet" type="text/css">

应该从下载

http://my.server.com:5555/css/my.css

在将其发送回浏览器之前?

提前谢谢

4

1 回答 1

3

我猜这个问题是你的(tomcat)服务器认为它仍然存在于 http 地址(你可以通过查看标题和 HTML 来确认)。

因此它在页面中包含对 http 地址的引用,而不知道请求来自 https 版本。

假设您想要所有流量 https(并且 http 路径被阻止和/或 tomcat 绑定到本地主机) - 您想要检查http://tomcat.apache.org/tomcat-7.0-doc/proxy-howto.html如何告诉tomcat它不是生活在它可以看到的地址 - 而是在你从apache暴露给互联网的地址(即前门)。

你所追求的是proxyName、proxyPort以及scheme和secure。

例如,请参见http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2007800的选项 4 和 3 。

于 2012-07-13T15:24:13.700 回答