Apache SSL Proxypass为zope提供了不安全的内容

Apache SSL Proxypass为zope提供了不安全的内容,apache,plone,zope,Apache,Plone,Zope,apache配置试图重定向或代理到其他Web服务器时遇到了障碍。谷歌已经有一段时间了,但我还是被困在下面的场景中。除了将apache用于一些现成的web应用程序(如Plone、cmdbuild等),我对apache没有太多经验。将安全性放在Apache的配置之外,我是否试图以错误的方式实现某些东西。一定要给我你的观点和其他可能的方式来实现我的目标。我计划在https下运行所有站点 情景: 服务器1–10.0.0.1(CentOS 6.5) Apache(版本2.2.5)在端口80上运行(启用SS

apache配置试图重定向或代理到其他Web服务器时遇到了障碍。谷歌已经有一段时间了,但我还是被困在下面的场景中。除了将apache用于一些现成的web应用程序(如Plone、cmdbuild等),我对apache没有太多经验。将安全性放在Apache的配置之外,我是否试图以错误的方式实现某些东西。一定要给我你的观点和其他可能的方式来实现我的目标。我计划在https下运行所有站点

情景:

服务器1–10.0.0.1(CentOS 6.5) Apache(版本2.2.5)在端口80上运行(启用SSL)-主Web服务器 Zope(Plone)在端口8080上运行 地点:

http://10.0.0.1:8080/site1

http://10.0.0.1:8080/site2
服务器2–10.0.0.2(CentOS 6.5) Tomcat在端口8080上运行 网站:
http://10.0.0.3:8080/site3
服务器3–10.0.0.3(Windows Server 2008) 在端口80上运行的IIS 网站:
http://10.0.0.4/site4

如果在apache ssl.conf上使用ProxyPass和Proxy PassReverse,如下所示:

ProxyPass /site1 http://10.0.0.1:8080/site1
ProxyPassReverse /site1 http://10.0.0.1:8080/site1

ProxyPass /site2 http://10.0.0.1:8080/site2 
ProxyPassReverse /site2 http://10.0.0.1:8080/site2 

ProxyPass /site3 http://10.0.0.2:8080/site3 
ProxyPassReverse /site3 http://10.0.0.2:8080/site3 

ProxyPass /site4 http://10.0.0.1:8080/site4 
ProxyPassReverse /site4 http://10.0.0.1:8080/site4
站点3和站点4在启用ssl的情况下正常工作,但是站点1和站点2(在localhost zope下运行)也正常工作,但是内容显示不正常,因为

“连接部分加密 您正在查看的页面部分未加密…”

如果如下图所示使用RewriteEngine而不是ProxyPass,则site1和site2都可以在ssl下完美运行

RewriteEngine On
RewriteRule ^/(.*) http://10.0.0.1:8080/VirtualHostBase/https/%{SERVER_NAME}:443/site1/VirtualHostRoot/$1 [L,P]
但无法访问其他站点site3和site4

apachehttpd.conf刚刚永久重定向到https

<VirtualHost *:80>

    Redirect permanent / https://10.0.0.1/

</VirtualHost>

重定向永久/https://10.0.0.1/

如果您的重写规则适用于site1以外的任何内容,那是因为收购使其他站点出现在site1中。你不想依赖它

相反,每个站点都有一个单独的重写规则:

    RewriteEngine On
    RewriteRule ^/site1(.*) http://10.0.0.1:8080/VirtualHostBase/https/{SERVER_NAME}:443/site1/VirtualHostRoot/$1 [L,P]
    RewriteRule ^/site2(.*) http://10.0.0.1:8080/VirtualHostBase/https/{SERVER_NAME}:443/site2/VirtualHostRoot/$1 [L,P]   
    RewriteRule ^/site3(.*) http://10.0.0.2:8080/VirtualHostBase/https/{SERVER_NAME}:443/site3/VirtualHostRoot/$1 [L,P]    
    RewriteRule ^/site4(.*) http://10.0.0.1:8080/VirtualHostBase/https/{SERVER_NAME}:443/site4/VirtualHostRoot/$1 [L,P]

不要试图用一条重写规则来实现这一点,否则您将通过代理暴露您的Zope根。一个坏主意。

嗨,史蒂夫,我尝试了你建议的编写4重写规则的方法,但是对于运行在不同服务器上的tomcat上的site3,会出现http状态404错误,表示“/VirtualHostBase/https/10.0.0.1:443/site3/VirtualHostRoot/”请求的资源不可用。对于在不同IP上的IIS上运行的站点4也是如此。当我查看您的原始规则集时,我没有注意到您的站点3在不同IP上运行。我刚刚编辑了回复中的规则集以匹配您的原始规则。对于站点4,您的IP与1和2相同。此外,如果站点4在IIS(而不是Zope)上运行,您将不需要“VirtualHost…”标记,这是Zope特有的。你可能需要使用ProxyPass和ProxyPassReverse,因为我不相信IIS有任何与Zope的内部重写器(虚拟主机怪物)等价的功能。嗨,Steve,非常感谢你为我指明了我想要实现的正确方向。正如所建议的,我对IIS站点使用proxypass,对plone站点使用rewite规则。最初,由于未显示不安全的内容,重写规则在正确显示站点方面存在一些问题。我尝试了重写规则,并为我的两个站点使用了生成的代码,这与我们以前使用的重写规则有点不同。现在,这些站点可以完美地显示所有内容的安全性。再次感谢。