httpd 针对不同源地址进行重定向

今天遇到个需求,大致描述下

1.普通IP用户访问http://192.168.56.11:8080   , 打开的界面就是该站点。

2.特殊IP用户访问http://192.168.56.11:8080 , 打开的界面是http://192.168.56.11:9090


需求看上去很简单吧,实现起来费了我半天时间。

1)首先想到的是httpd的反向代理,配置是这样的:

<VirtualHost *:8080>
    DocumentRoot  /var/www/aaa

ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://127.0.0.1:9090/
ProxyPassReverse / http://127.0.0.1:9090/

<Proxy *>
Order Deny,Allow
Deny from all
Allow from  192.168.56.233         
</Proxy>       

<VirtualHost *:8080>                                            

//反向代理转发功能是实现了,关键是所有人访问8080端口都被转至9090端口,那么我就想去做限制了,使用了下面的<Proxy>,结果是只有233这台代理成功,其余的都被Forbidden,反向代理是行不通了,我又去考虑重定向。

2)重定向配置如下:

<VirtualHost *:8080>
    DocumentRoot  /var/www/aaa

    ProxyRemote  *  http://127.0.0.1:9090/

    NoProxy  192.168.56.0/24

<VirtualHost *:8080>     

//重定向功能是实现了,关键是所有人访问8080端口都被转至9090端口,那么我就想去做限制了,使用了下面的NoProxy,结果除了192.168.56.0/24端不被代理,其余的都被重定向,重定向是行不通了。


3)还是使用防火墙iptables吧,先放所有,让后我们在做转发配置

vi /etc/sysconf/iptables

-A INPUT -j ACCEPT
-A FORWARD -j ACCEPT
-A OUTPUT -j ACCEPT


iptables -t nat -A PREROUTING -s 192.168.56.233 -p tcp -m tcp --dport 8080 -j REDIRECT --to-ports 9090

查看nat防火墙配置的命令:
iptables -t nat -vnL PREROUTING --line-number
iptables -t nat -vnL OUTPUT --line-number


删除防火墙规则:
iptables -t nat -D PREROUTING 1
iptables -t nat -D OUTPUT 1


参考文档:

http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy.html#proxyremote

http://www.cnblogs.com/zemliu/archive/2012/04/18/2454655.html





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr. Sun_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值