Apache重写或代理

我有我的机器上运行的Apache服务器(端口80)我有我的机器上运行的Zope服务器(端口8080)

我希望所有用户,不pipe域名(现在让我们使用www.example.com)无缝地推送到zope实例

IE浏览器,如果我input我的浏览器http://www.example.com/mysite

它会显示http://www.example.com:8080/mysite的效果

我想要的url仍然说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”进行连接

Zope使用路径中的VirtualHostMonster标志来支持您的场景,并且有一些特殊的重写。 这确保了由Zope(以及扩展名为Plone)生成的任何URL对于代理请求也是正确的。

你应该同时使用mod_rewritemod_proxy ,他们将一致工作。

为了使创建正确的重写URL更容易,有人建立了一个优秀的RewriteRule女巫 。 插入您的具体示例输出:

 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,请将其重写为在本地端口8080上运行的服务器,以确保Zope生成具有相同根的URL。

有关更多详细信息,请参阅Zope wiki 上有关VirtualHostMonster功能的详细文档 。

您可以使用mod_rewriteP (代理)规则或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> 

两者都完成大致相同的事情。 使用带有ProxyPassLocation块可以轻松地将其他配置指令应用于前端服务器上的此路径。