我的机器上运行了Apache服务器(端口80) 我在我的机器上运行了一个Zope服务器(端口8080)
我希望所有用户,无论域名(现在让我们使用www.example.com)都可以无缝地推送到zope实例
IE 如果我输入我的浏览器 http://www.example.com/mysite
它会显示效果 http://www.example.com:8080/mysite
BUT
我希望网址仍然可以说 http://www.example.com/mysite
(子)域应该是无关的,因为有2或3个域指向同一个服务器
我应该看看mod_rewrite还是mod_proxy?我有一半的mod_rewrite工作,但是它会改变浏览器中的内容吗?
目前正在尝试
RewriteEngine on
RewriteRule ^($|/.*) http://localhost:8080/$1 [P]
但获得服务器500
使用“http:// localhost / mysite”进行连接
答案 0 :(得分:3)
您可以mod_rewrite
使用P
(代理)规则或mod_proxy
来执行您想要的操作。使用mod_rewrite
您的配置将如下所示:
RewriteRule ^/mysite/(.*) http://www.example.com:8080/mysite/$1 [P]
使用mod_proxy
,您的配置如下所示:
<Location /mysite/>
ProxyPass http://www.example.com:8080/
ProxyPassReverse http://www.example.com:8080/
</Location>
两者完成大致相同的事情。使用带有Location
的{{1}}块可以轻松地将其他配置指令应用于前端服务器上的此路径。
答案 1 :(得分:3)
Zope使用路径中的VirtualHostMonster
标记,通过一些特殊的重写支持您的场景开箱即用。这确保了Zope(以及扩展名,Plone)生成的任何URL对于代理请求也是正确的。
你应该使用 mod_rewrite
和mod_proxy
,他们将协同工作。
为了更轻松地创建正确的重写网址,有人建立了一个优秀的RewriteRule Witch。插入您的具体示例输出:
RewriteRule ^/mysite($|/.*) \
http://127.0.0.1:8080/VirtualHostBase/\
http/%{SERVER_NAME}:80/mysite/VirtualHostRoot/_vh_mysite$1 [L,P]
因此,对于以http://www.example.com/mysite
为根的任何URL,重写这些URL将从运行在localhost端口8080上的服务器提供,确保Zope生成具有相同根的URL。
有关详细信息,请参阅Zope wiki上的detailed documentation on the VirtualHostMonster feature。