Apache SSL Proxypass为zope提供了不安全的内容
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上运行 地点: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
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规则。最初,由于未显示不安全的内容,重写规则在正确显示站点方面存在一些问题。我尝试了重写规则,并为我的两个站点使用了生成的代码,这与我们以前使用的重写规则有点不同。现在,这些站点可以完美地显示所有内容的安全性。再次感谢。