因为某些原因,我的网站的入口域名指向HK,由Nginx反向代理回内陆的服务器。
HK 访问起来速度还是不错的,但宽带很少,最大只有2M,超过的话访问会越来越慢。
我在广州设立了squid缓存服务器的架构,分发了所有静态文件。基本上HK 就只有主页的php 传输了。
但这也不小,用 Firebug 查看,首页基本上都有10K 再+上其余的重定向数据。再小20K 左右走不掉。
经过调优,强制启用了Nginx反向代理中也使用 gzip,即 (内陆Nginx) –> gzip –> (香港Nginx) –> gzip –> 用户
流量缩少了10% 但还是处于紧张边缘。
查看 HTTP 访问日志,得出有 google baidu 等蜘蛛抓得也挺狠!于是想到,能不能把搜索引擎的爬虫也从定向到内陆的服务器减少负担?
于是就有了以下这个 Nginx 的配置:
香港配置:
if ($http_user_agent ~* (baiduspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
rewrite ^/(.*)$ http://gznow.spider.someqone.com/$1 permanent;
}
直接+到 server { 里头即可。意思为:
匹配客户端User agent 不分大小写,凡是含有 baidu,google,bing….
之类爬虫。从定向到指定地址,并匹配原有 url 后续 即:
http://www.gznow.org/bbs/index.php
301 从定性为:
http://gznow.spider.someqone.com/bbs/index.php
这样的话既不影响搜索引擎的收录,也可以把流量分配给其他的服务器。
但如果日后搜索引擎收录的访问地址也成了从定向的地址咋办?
所以就要再多一步,把从定向的目的服务器配置一下:
if ($http_user_agent ~* (Safari|Navigator|Chrome|Opera|Firefox|msie)) {
rewrite ^/(.*)$ http://www.gznow.org/$1 permanent;
}
也是直接加到 server { 即可
原来跟处理爬虫的一样,不分大小写匹配 user agent 中包含的主流浏览器 msie , firefox , chrome….
从定向到指定地址,并匹配原有 url 后续.
这样即使访客由搜索引擎指引到了从定向的服务器,也能从定向回去。
呵,特殊例子,分享一下。
这么一作,我HK 服务器的流量可立马又省下了 30% 。 放心了不少。

