Author: admin | Category: Nginx
Comments: 评论关闭

nginx的geo模块可以做全局负载均衡,可以要根据客户端ip访问到不同的server。比如,可以将电信的用户访问定向到电信服务器,网通的用户重定向到网通服务器。
我这里实现只有移动手机用户才能访问服务器。首先要收集全移动网关ip.
配置如下:

worker_processes 1;
events {
        worker_connections 1024;
}

http {
        include         mime.types;
        default_type    application/octet-stream;
        sendfile        on;
        keepalive_timeout 65;
        geo $cmccip {
                default 1;   # 未定义ip的值为1
                include cmcc.conf; 加载geo.conf文件,这个文件定义移动网关ip
        }
        server {
                listen 801;
                server_name XXXXX;
                location / {
                        if ($cmccip) {
                                rewrite ^ http://tx.com.cn;   未定义ip即非移动ip重定向到tx.com.cn;
                        }
                        root /data/www;
                        index index.wml index.html;

                }
        }
}

cmcc.conf文件内容如下:
211.136.222.90/32 0;

Author: admin | Category: Nginx
Comments: 评论关闭

因为某些原因,我的网站的入口域名指向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% 。 放心了不少。

Top
RSS for entries