我在OS X Server 10.5上通过Apache Proxy设置了一个plone zinstance。服务器在端口80上设置了一个vhost,使用Proxy&对Plone zinstance的Proxypass指令:
ProxyPass / http://localhost:8080/VirtualHostBase/http/server:80/Plone/VirtualHostRoot/
ProxyPassReverse / http://localhost:8080/VirtualHostBase/http/server:80/Plone/VirtualHostRoot/
但是,我想通过plone网站在iframe中显示一些静态HTML和PHP内容。我想我需要在另一个端口上设置另一个vhost,然后只需指定端口#inline?
答案 0 :(得分:2)
设置一个静态URL,该URL不会被代理,而是直接从Apache提供,如下所示:
ProxyPass /static !
ProxyPass / http://localhost:8080/VirtualHostBase/http/server:80/Plone/VirtualHostRoot/
ProxyPassReverse / http://localhost:8080/VirtualHostBase/http/server:80/Plone/VirtualHostRoot/
然后配置/ static以包含静态内容。
答案 1 :(得分:1)
我建议您将配置滚动到虚拟主机块中。您可以通过重写特定路径直接从apache提供静态内容。这是一个例子
<VirtualHost *:80>
ServerName yoursite.com
Alias /static /var/www/some/path/
<Directory "/var/www/some/path">
Options Includes FollowSymLinks
AllowOverride All
</Directory>
# Zope rewrite.
RewriteEngine On
RewriteRule /static - [L]
RewriteRule ^/(.*) http://127.0.0.1:8080/VirtualHostBase/http/%{SERVER_NAME}:80/Plone/VirtualHostRoot/$1 [L,P]
</VirtualHost>
答案 2 :(得分:0)
抱歉,信息不足,但我会提供一些可能有助于指明正确方向的评论。
首先,ProxyPassReverse是不必要的,因为Plone已经负责修复任何自引用URL。毕竟,这就是疯狂网址的重点。
另一张海报已经展示了如何配置ProxyPass以选择性地将代理绕过Plone并直接从Apache提供服务。
关于“端口8888上的附加虚拟主机”。目前尚不清楚你的意思。什么是额外的虚拟服务?如果它是你的静态html和php内容应该来自那么限制到localhost只意味着你将不得不配置一个内部代理来达到它。你可以用Rewrite规则做到这一点,但这似乎是一个过于复杂的方式进入这个用例。为什么此虚拟主机仅可用于localhost?就此而言,为什么使用单独的vhost ...你可以在一个vhost中使用适当的ProxyPass行(或者如果你需要更多的灵活性重写行)来完成所有这些(Plone,静态文件和PHP)。