给大家带来Nginx geoip模块完成区域性负载平衡
不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令。信任做过awstats的都用过开源的geoip.datip数据库,恰好nginxwiki上有geoip模块,如许就能够完成区域性的负载平衡,可是maxmind的ip数据库对中国的撑持不算太好,不外如今也不错了~
参考文章:http://wiki.nginx.org/NginxHttpGeoIPModule
说下我的情况,我有一台美国linux服务器,一台美国的windows2003,一台本的XP。呆板,其他测试用户都是,QQ群里的伴侣,好了入手下手测试
linux:75.125.x.x//美国
win2003:74.55.x.x//美国
XP:localhost//北京
测试转发,美国用户~转发到www.google.cn
电信转发到我的一台公网的apache默许页面
网通转发到我的一台公网营业服务器!!
1.下载安装nginx.
shell$>gethttp://sysoev.ru/nginx/nginx-0.8.13.tar.gz
shell$>tarzxvfnginx-0.8.13.tar.gz
shell$>cdnginx-0.8.13
shell$>apt-getinstalllibgeoip-dev
shell$>./configure--prefix=/usr/local/nginx--with-http_flv_module--user=www--group=www--with-http_gzip_static_module--with-http_geoip_module
shell$>make
shell$>makeinstall
2.下载GeoLiteCity.dat.gz数据库~
shell$>wgethttp://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
shell$>gzip-dGeoLiteCity.dat.gz
shell$>mvGeoLiteCity.dat/usr/local/nginx/conf/GeoLiteCity.dat
3.修正设置文件完成区域性子负载
shell$>cd/usr/local/nginx/conf
shell$>catnginx.conf
worker_processes1;
events{
worker_connections1024;
}
http{
includemime.types;
default_typeapplication/octet-stream;
geoip_cityGeoLiteCity.dat;
upstreamwangtong{
server59.151.X.X;
}
upstreamdianxin{
server75.125.X.X;
}
upstreamUSA{
serverwww.google.cn;
}
sendfileon;
keepalive_timeout65;
server{
listen80;
server_name75.125.197.200;
roothtml;
indexindex.htmlindex.htm;
location/{
if($geoip_region~"(01|02|03|04|06|07|11|13|14|15|16|21|23|29|30|31|32|33)"){
proxy_passhttp://dianxin$request_uri;
}
if($geoip_region~"(05|08|09|10|12|17|18|19|20|24|25|26)"){
proxy_passhttp://wangtong$request_uri;
}
if($geoip_city_country_code~"US"){
proxy_passhttp://USA$request_uri;
}
}
error_page500502503504/50x.html;
location=/50x.html{
roothtml;
}
}
}
4.测试,用分歧中央的呆板做测试~
我是北京用户,会见
我是北京用户会见的是默许页面是由于我没有把22数字填加到设置文件里。我是为了便利测试!人人如果用在临盆上要把22加到
if($geoip_region~"(05|08|09|10|12|17|18|19|20|24|25|26)")
没有婚配到,就会见了默许页面~~
成都伴侣协助会见:
广州的伴侣协助会见:
河北伴侣协助会见:
美国win2003会见:
间接会见电信的服务器和网通服务器
59.151.X.X;75.125.X.X;
间接会见网通59.151.X.X
间接会见电佩服务器75.125.X.X
上面我来注释一下
if($geoip_region~"(01|02|03|04|06|07|11|13|14|15|16|21|23|29|30|31|32|33)")
这些数字代表的是中国省分区域~~
表以下:
CN,01,"Anhui"
CN,02,"Zhejiang"
CN,03,"Jiangxi"
CN,04,"Jiangsu"
CN,05,"Jilin"
CN,06,"Qinghai"
CN,07,"Fujian"
CN,08,"Heilongjiang"
CN,09,"Henan"
CN,10,"Hebei"
CN,11,"Hunan"
CN,12,"Hubei"
CN,13,"Xinjiang"
CN,14,"Xizang"
CN,15,"Gansu"
CN,16,"Guangxi"
CN,18,"Guizhou"
CN,19,"Liaoning"
CN,20,"NeiMongol"
CN,21,"Ningxia"
CN,22,"Beijing"
CN,23,"Shanghai"
CN,24,"Shanxi"
CN,25,"Shandong"
CN,26,"Shaanxi"
CN,28,"Tianjin"
CN,29,"Yunnan"
CN,30,"Guangdong"
CN,31,"Hainan"
CN,32,"Sichuan"
CN,33,"Chongqing"
GeoLiteCity.dat更多变量请看wiki我这里只用到两个变量一个是$geoip_region一个是$geoip_city_country第一个是区域,第二个变量是国度只取两个字母简写!
geoip_citysyntax:geoip_citypath/to/db.dat;
default:none
context:http
Thedirectiveindicatesthepathtothe.datfileusedfordeterminingcountries,regionsandcitiesfromIP-addressoftheclient.Whensetthemodulemakesavailablethefollowingvariables:
$geoip_city_country_code;-two-lettercountrycode,forexample,"RU","US".$geoip_city_country_code3;-three-lettercountrycode,forexample,"RUS","USA".$geoip_city_country_name;-thenameofthecountry,forexample,"RussianFederation","UnitedStates".$geoip_region;-thenameofregion(province,region,state,province,federalland,andthelike),forexample,"MoscowCity","DC".$geoip_city;-thenameofthecity,forexample,"Moscow","Washington".$geoip_postal_code;-postalcode.
PS:我只是依据北方电信,南方网通来辨别的~~我是北京用户会见的是默许页面是由于我没有把22数字填加到设置文件里。我是为了便利测试!人人如果用在临盆上要把22加到
if($geoip_region~"(05|08|09|10|12|17|18|19|20|24|25|26)")
网通里~不外开源的geoip仍是有些禁绝确的~~~只能给他75分~~
本文出自“linuxer”博客,请务必保存此出处http://deidara.blog.51cto.com/400447/198469
RedHatCentOS等等.学习linux不是逛自由市场,选定版本就要静下心来学习.不要今天换版本明天要升级.这样对你没有好处。 永中office2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。 其实老师让写心得我也没怎么找资料应付,自己想到什么就写些什么,所以不免有些凌乱;很少提到编程,因为那些在实验报告里已经说了,这里再写就多余了。 我想即使Linux高手也很难快速准确精练的回答你。 熟悉操作是日常学习Linux中的三大法宝。以下是作者学习Linux的一些个人经验,供参考: Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。 Windows有MS-DOS?方式,在该方式下通过输入DOS命令来操作电脑;Linux与Windows类似,也有命令方式,Linux?启动后如果不执行?X-WINDOWS,就会处于命令方式下,必须发命令才能操作电脑。? 随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。 Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。
页:
[1]