仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 446|回复: 8
打印 上一主题 下一主题

[其他Linux] 给大家带来Nginx geoip模块完成区域性负载平衡

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 15:08:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
不同版本的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_pass
http://dianxin$request_uri;
}
if($geoip_region~"(05|08|09|10|12|17|18|19|20|24|25|26)"){
proxy_pass
http://wangtong$request_uri;
}
if($geoip_city_country_code~"US"){
proxy_pass
http://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不是逛自由市场,选定版本就要静下心来学习.不要今天换版本明天要升级.这样对你没有好处。
乐观 该用户已被删除
沙发
发表于 2015-1-18 15:40:33 | 只看该作者
永中office2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-24 13:53:42 | 只看该作者
其实老师让写心得我也没怎么找资料应付,自己想到什么就写些什么,所以不免有些凌乱;很少提到编程,因为那些在实验报告里已经说了,这里再写就多余了。
小魔女 该用户已被删除
地板
发表于 2015-2-1 16:48:51 | 只看该作者
我想即使Linux高手也很难快速准确精练的回答你。
分手快乐 该用户已被删除
5#
发表于 2015-2-7 10:07:32 | 只看该作者
熟悉操作是日常学习Linux中的三大法宝。以下是作者学习Linux的一些个人经验,供参考:
只想知道 该用户已被删除
6#
发表于 2015-2-21 19:57:24 | 只看该作者
Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。
老尸 该用户已被删除
7#
发表于 2015-3-6 21:55:14 | 只看该作者
Windows有MS-DOS?方式,在该方式下通过输入DOS命令来操作电脑;Linux与Windows类似,也有命令方式,Linux?启动后如果不执行?X-WINDOWS,就会处于命令方式下,必须发命令才能操作电脑。?
冷月葬花魂 该用户已被删除
8#
 楼主| 发表于 2015-3-13 22:09:52 | 只看该作者
随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。
海妖 该用户已被删除
9#
发表于 2015-3-20 20:59:25 | 只看该作者
Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-25 01:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表