【问题标题】:Apache Rewrite or proxyApache 重写或代理
【发布时间】:2012-08-09 20:05:10
【问题描述】:

我的机器上运行着 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”连接

【问题讨论】:

    标签: apache mod-rewrite plone zope mod-proxy


    【解决方案1】:

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

    您应该同时使用mod_rewritemod_proxy,它们会协同工作。

    为了更轻松地创建正确的重写 URL,有人构建了一个出色的 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,重写这些以从运行在 localhost 端口 8080 上的服务器提供服务,确保 Zope 生成具有相同根的 URL。

    有关更多详细信息,请参阅 Zope wiki 上的 detailed documentation on the VirtualHostMonster feature

    【讨论】:

    • 闪亮!我不知道那个重写女巫
    【解决方案2】:

    您可以使用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 块可以轻松地将其他配置指令应用于前端服务器上的此路径。

    【讨论】:

    • 好的,我以为我明白了,但它不起作用,让我们假设本地主机,(因为那是我目前唯一可以测试的地方)(子)域应该是无关紧要的,目前它返回一个 404(使用代理解决方案)欢呼
    • 把你的实际配置放在问题中,包括前端和监听端口 8080 的任何东西。
    • Apache 文档推荐使用 ProxyPass:httpd.apache.org/docs/2.4/rewrite/avoid.html
    猜你喜欢
    • 2014-03-17
    • 2017-03-16
    • 2016-06-14
    • 2014-06-03
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2019-07-01
    相关资源
    最近更新 更多