使用mod_rewrite进行代理

本文描述了如何使用RewriteRule[P]标志将内容代理到另一台服务器。提供了许多描述常见场景的配置。

使用mod_rewrite代理内容

mod_rewrite提供[P]标志,允许通过mod_proxy将URL传递到另一个服务器。这里给出了两个例子。在一个示例中,URL直接传递到另一个服务器,并且就像它是本地URL一样。在另一个示例中,我们将缺少的内容代理到后端服务器。

解决:
要简单地将URL映射到另一个服务器,我们使用[P]标志,如下所示:

RewriteEngine  on
RewriteBase    "/products/"
RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"

在第二个示例中,仅在无法在本地找到资源时,才会代理请求。当您从一台服务器迁移到另一台服务器,并且您不确定是否所有内容都已迁移时,这非常有用。

RewriteCond "%{REQUEST_FILENAME}"       !-f
RewriteCond "%{REQUEST_FILENAME}"       !-d
RewriteRule "^/(.*)" "http://old.example.com/$1" [P]
ProxyPassReverse "/" "http://old.example.com/"

上一篇: Apache URL重写 下一篇: Apache认证和授权