【问题标题】:Map virtual directory to another web server in apache将虚拟目录映射到 apache 中的另一个 Web 服务器
【发布时间】:2010-11-02 08:37:41
【问题描述】:

是否可以配置 Apache Web 服务器以将目录映射到另一个 Web 服务器上的路径?例如,我可以请求http://server1/resource/ 返回http://server2/resource/。如果可以,我该如何设置?

【问题讨论】:

    标签: apache http


    【解决方案1】:

    mod_proxy 是要走的路

    用途:

    <Location /resource/>
        ProxyPass http://server2/resource/
        SetEnv force-proxy-request-1.0 1
        SetEnv proxy-nokeepalive 1
    </Location> 
    

    【讨论】:

    • 这里唯一的缺点是在每秒高请求的环境中,您正在代理,因此当您转到其他服务器和进程时,Apache 的后端保持打开状态。这需要更多的开放连接,并且可能比仅使用 http 标头将浏览器发送到正确的服务器要慢。
    • 虽然我确实如前所述回答了这个问题,但在大容量环境中的架构级别上,我同意您不想使用 Apache 执行此操作。
    【解决方案2】:

    mod_rewrite 对此非常强大。您将为 /resource/ 设置重写规则并使用 302 重定向将人员发送到服务器 2。

    http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

    http://www.modrewrite.com/

    未经测试的示例:

    <location "/">
     RewriteEngine On
     RewriteRule ^/resource/(.*)$ http://server2/resource/$1 [R]
    </location>
    

    【讨论】:

      【解决方案3】:

      我认为这个问题是针对 serverfault.com 的。此处不详述,但您可以在 apache 配置中使用 RewriteCond、RewriteRule 指令进行设置。

      我同时使用了mod_proxy and mod_rewrite 规则来达到类似的效果。 PS:查看 serverfault.com 并尝试一下系统管理员。

      【讨论】:

      • 同意这在 ServerFault.com 上会更好
      猜你喜欢
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多