【问题标题】:rewriterule for Apache to do reverseproxy为 Apache 重写做反向代理
【发布时间】:2014-08-08 10:12:50
【问题描述】:

我正在使用公共 DNS 运行我的 Apache 服务器,例如 www.siteA.com。我正在托管一个内部站点,它是 www.siteB.com

我想在我的服务器的 .htaccess 中重写规则,这样如果任何时候有一个请求到达www.siteA.com/getData/mydata.php,它就会将此请求代理到www.siteB.com/getData/mydata.php

我在siteA .htaccess 中写了这条规则:

RewriteCond %{REQUEST_URI} ^/(getData.*)
RewriteRule (.*) http://www.siteB.com/$1 [P]

但我收到服务器内部错误。这可能是什么原因。如何实现这个代理?

我已启用 proxy_module 和 proxy_http_module。我还需要写什么来让代理工作吗?

谢谢 k2G

【问题讨论】:

    标签: php apache .htaccess proxy


    【解决方案1】:

    有几种方法可以做到这一点,或者像你尝试的那样使用 RewriteRule:

    RewriteEngine On
    RewriteBase /
    RewriteRule ^(getData\/.*) http://www.siteB.com/$1 [P]
    

    或者你可以使用ProxyPass:

    ProxyPass /getData http://www.siteB.com/getData
    

    请注意,这适用于 getData 之后的任何内容,例如它将匹配 getData/mydata.phpgetData/some/other/path/file.php

    【讨论】:

    • 感谢您的回复。我想从我的主要地址中找出代理地址。所以这意味着,如果我的请求像 - myadress.domain.com。我希望这个代理到myadress.domain2.com。有可能吗?>
    • 不确定我是否理解。如果您在myaddress.domain.com 的站点配置中有上述配置,则可以做到这一点。不知道你是不是指ProxyPreserveHost传递host-header?
    猜你喜欢
    • 2014-03-17
    • 1970-01-01
    • 2019-07-01
    • 2011-03-24
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2020-05-19
    • 2014-03-24
    相关资源
    最近更新 更多