4

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

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

IE 如果我在浏览器中输入 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”连接

4

2 回答 2

3

您可以使用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>

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

于 2012-08-13T15:01:38.427 回答
3

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

您应该同时 mod_rewrite使用and mod_proxy,它们将协同工作。

为了更轻松地创建正确的重写 URL,有人构建了一个出色的RewriteRule Witch。插入您的特定示例输出:

RewriteRule ^/mysite($|/.*) \
http://127.0.0.1:8080/VirtualHostBase/\
http/%{SERVER_NAME}:80/mysite/VirtualHostRoot/_vh_mysite$1 [L,P]

因此,对于任何以 为根的 URL http://www.example.com/mysite,重写它们以从运行在 localhost 端口 8080 上的服务器提供服务,确保 Zope 生成具有相同根的 URL。

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

于 2012-08-13T15:32:21.460 回答