<-
Apache HTTP 服务器 2.4 > 使用mod_rewrite的动态代理

使用mod_rewrite进行代理

本文档是mod_rewrite 参考文档的补充。它描述了如何使用RewriteRule的[P]标志将内容代理到另一台服务器。提供了许多描述常见方案的食谱。

支持Apache!

也可以看看

最佳

使用mod_rewrite代理内容

描述:

mod_rewrite提供[P]标志,该标志允许URL通过mod_proxy传递到另一台服务器。这里给出两个例子。在一个示例中,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/"
讨论:

在每种情况下,我们都添加一条ProxyPassReverse指令以确保后端发出的任何重定向均正确地传递给客户端。

考虑优先使用mod_rewrite之一ProxyPassProxyPassMatch尽可能使用它。

可用语言: zh  |  fr 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。