运用nginx的第三方模块ngx_cache_purge和http_geoip_module(Geoip模块)

Geoip模块的作用主要是屏蔽某个地区的IP访问,系统自带的nginx一般不带这个模块,所以要下载nginx源代码后自行编译:

   
   
   
   
  1. wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz  
  2. tar zxvf GeoIP.tar.gz  
  3. cd GeoIP-1.4.8/  
  4. ./configure  
  5. make && make install  
  6. echo '/usr/local/lib' > /etc/ld.so.conf  
  7. ldconfig  
  8. cd ../  

 然后下载proxy_cache所需的模块ngx_cache_purge:

 

   
   
   
   
  1. wget http://labs.frickle.com/files/ngx_cache_purge-1.5.tar.gz  
  2. tar zxf ngx_cache_purge-1.5.tar.gz 

 

   
   
   
   
  1. wget http://soft.vpser.net/web/pcre/pcre-8.12.tar.gz  
  2. tar zxf pcre-8.12.tar.gz  
  3. cd pcre-8.12  
  4. ./configure  
  5. make && make install  
  6. cd ../  
  7.  
  8. wget  http://nginx.org/download/nginx-1.0.10.tar.gz  
  9. tar zxf nginx-1.0.10.tar.gz  
  10. cd nginx-1.0.10  
  11. ./configure --user=www --group=www --add-module=../ngx_cache_purge-1.5 --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_geoip_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6  
  12. make && make install  
  13. cd ../ 

当安装好之后还需要下载IP 数据库

 

   
   
   
   
  1. wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz  
  2. gunzip GeoIP.dat.gz  
  3. 还有城市IP数据库详见:  
  4. http://www.howtoforge.com/using-geoip-with-nginx-on-debian-squeeze-ubuntu-11.04 

nginx的http环境中中添加配置

 

   
   
   
   
  1. http { ... geoip_country /path/to/GeoIP.dat; fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code; fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3; fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name; ... }

这里并没有配置关于proxy_cache的事例,接着配置一个关于IP访问,通过Geoip模块获取得到如果是中国的IP就转向google

 

   
   
   
   
  1. server {  
  2. ·····  
  3. if ($geoip_country_code ~ ^CN) {  
  4.    return http://www.google.com;  
  5. }  
  6. ······  
  7.  

启动nginx,看下模块是否加载成功:

 

   
   
   
   
  1. /usr/local/nginx/sbin/nginx -V  
  2. nginx: nginx version: nginx/1.0.10  
  3. nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-52)  
  4. nginx: TLS SNI support disabled  
  5. nginx: configure arguments: --user=www --group=www 
  6. --add-module=../ngx_cache_purge-1.5
  7. --prefix=/usr/local/nginx 
  8. --with-http_stub_status_module 
  9. --with-http_geoip_module
  10. --with-http_ssl_module 
  11. --with-http_gzip_static_module
  12. --with-ipv6 

这样都是正常的,再访问打开的是跳到google就对了。