apache 代理转发 配置

需求 www.a.com 的所有 请求资源 是 api路径下的转发到 www.b.com

apache 版本:2.4.x
首先开启转发模块:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

然后配置 vhosts
配置如下:

<VirtualHost *:80>
    ServerName www.a.com
    DocumentRoot D:/wamp/www/a.com
    <Directory "D:/wamp/www/a.com">
            Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    # ProxyPass / http://www.b.com/
    # ProxyPassReverse / http://www.b.com/
    ProxyPassMatch ^/api http://www.b.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName www.b.com
    DocumentRoot D:/wamp/www/b.com
    <Directory "D:/wamp/www/b.com">
            Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

ProxyPassMatch 指定正则匹配
重启 apache 后可以测试访问

www.a.com 根目录下创建 a0.php 输出 in a0.php 创建api目录 创建 a1.php 输出 in a.com a1.php
然后 在 www.b.com 根目录下 b0.php 输出 in b0.php 创建 api目录 创建 a1.php 输出 in b.com a1.php 创建 b1.php 输出 in b.com b1.php
此时 访问 www.a.com/a0.php 输出 in a0.php
访问 www.a.com/api/a1.php 输出 in b.com a1.php
访问 www.a.com/api/b1.php 输出 in b.com b1.php

如果你需要所有的请求都转发 那么配置这两行即可:

ProxyPass / http://www.b.com/
ProxyPassReverse / http://www.b.com/

也可以指定某个请求进行转发

ProxyPass /list http://www.b.com/

ProxyPassReverse 总是 和 ProxyPass 一致即可
如果响应中有302重定向,ProxyPassReverse就派上用场。
假设用户访问http://www.a.com/redir.php,通过转发交给http://www.b.com/redir.php处理,

假定redir.php处理的结果是实现redirect到login.php(使用相对路径,即省略了域名信息),
如果没有配置反向代理,客户端收到的请求响应是重定向操作,并且重定向目的url为http://www.b.com/login.php
而这个地址只是代理服务器能访问到的,可想而知,客户端肯定是打不开的,
反之如果配置了反向代理,则会在转交HTTP重定向应答到客户端之前调整它为http://www.a.com/login.php,即是在原请求之后追加上了redirect的路径。当客户端再次请求http://www.a.com/login.php,代理服务器再次工作把其转发到http://www.b.com/login.php

展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值