sudone.com 服务器系统架构分析日志


配置nginx来区分电信网通的访问

[2009-08-24 21:33:30]
因为公司的dns支持电信网通分流,所以有一个项目利用到这个功能,用户访问同一个链接,电信ip的看到一个页面,网通ip的看到另一个。

原先的配置是用squid的hosts,网通的squid指到网通页面后台,电信的squid指到电信页面后台。

这种做法有明显缺点:

1、死活要有两台后端服务器,目前使用的squid2.5下是不支持配置不同端口的。

2、squid的hosts得有两份,这不利于管理,如果前端不断扩充,这又是一个麻烦事。

如果把这个域名网通电信的cache都指到了中层代理上,这些问题都很容易解决了。

配置的逻辑并不算复杂:

1、首先取到客户端ip,在中层代理上,客户端ip就是前面的cache服务器的内网ip,是很容易区分的。

2、使用一个判断语句,让他们各走各路就好。

配置:

location = / {
proxy_pass http://product.xxx.com;
include proxy.conf;
if ( $remote_addr ~ ^192\.168\.1 ) {
rewrite "^/$" /a/ last;
}
if ( $remote_addr ~ ^192\.168\.2 ) {
rewrite "^/$" /b/ last;
}
}

不过,如果没有前端cache,要做这样的区分,还是不可能实现的。

站名:sudone.com; 站长:Ayou; 服务器:ubuntu+nginx+squid+php