使用geoip模組的原因(why):由於專案的需要,需要對不同城市訪問的客戶進行請求**,eg:
當天津使用者a訪問www.***x.com的時候,nginx把這個請求**到天津的伺服器以及天津的網域名稱上去,瀏覽器自動跳轉tj.***x.com
當廣州使用者b訪問www.***x.com的時候,nginx把這個請求**到廣州的伺服器以及廣州的網域名稱上去,瀏覽器自動跳轉gz.***x.com
使用geoip模組的目的(what):博主理解為兩個層面,第一技術層級的,可以減輕某個伺服器的負載,做到負載均衡的效果;第二業務層級的,可以是使用者得到更好的互動效果,比如想搜房網 找房的首頁是當地區域的資料等等
使用geoip模組的時機(when):博主理解為兩個層面,第一技術層級的,如果**的訪問量特別大的時候可以使用這個模式,有效的減輕了某些伺服器的資源消耗;第二業務層級的,當業務有次需要的時候,換句話說當在某個城市當地有了服務點的時候需要使用此功能
使用geoip模組的應用(where):博主理解為nginx的容器上進行配置,顧名思義 geoip是nginx的編譯模組,當然要在nginx上使用
使用geoip模組的人群(who):當然是運維工程師了,叫碼農來配置他們也不會啊!
使用geoip模組的方法(how):下面將闡述如何使用geoip這個模組
geolitecity.dat
注:博主在linux的ubuntu12.04和centos 6上使用過此模組、對nginx1.8.1和nginx1.4.2兩個版本進行操作過。
步驟一、編譯nginx原有的引數保持不便需要新增兩個引數分別為--add-module=/usr/src/echo-nginx-module-master和--with-http_geoip_module兩個引數
步驟二、make
步驟三、make install
檢視是否安裝成功
步驟四、修改nginx的配置檔案在http段新增兩行引數分別為:
1
2
geoip_country
/var/aeoip/geoip
.dat;
geoip_city
/var/aeoip/geolitecity
.dat;
新增乙個新的server段如下:
1
2
3
4
5
6
7
8
9
10
11
server
}
步驟五、新增ngixn的變數 修改fastcgi_params檔案,新增內容如下:
1
2
3
4
5
6
7
8
9
10
#geo
fastcgi_param geoip_city_country_code $geoip_city_country_code;
fastcgi_param geoip_city_country_code3 $geoip_city_country_code3;
fastcgi_param geoip_city_country_name $geoip_city_country_name;
fastcgi_param geoip_region $geoip_region;
fastcgi_param geoip_city $geoip_city;
fastcgi_param geoip_postal_code $geoip_postal_code;
fastcgi_param geoip_city_continent_code $geoip_city_continent_code;
fastcgi_param geoip_latitude $geoip_latitude;
fastcgi_param geoip_longitude $geoip_longitude;
步驟六、測試 使用外網的客戶端訪問 http://hostip:9999/hello
至此nginx的geoip模組安裝成功。
ps1:引數介紹
$geoip_country_code - 兩個字母的國家**,如:"ru", "us"。
$geoip_country_code3 - 三個字母的國家**,如:"rus", "usa"。
$geoip_country_name - 國家的完整名稱,如:"russian federation", "united states"(如果可用)。
$geoip_region - 地區的名稱(類似於省,地區,州,行政區,聯邦土地等),如:"moscow city", "dc"(如果可用)。
$geoip_city - 城市名稱,如"moscow", "washington"(如果可用)。
$geoip_city_continent_code(如果可用)。
$geoip_latitude - 所在維度(如果可用)。
$geoip_longitude - 所在經度(如果可用)。
ps2:關於nginx 使用geo的**請求本文沒有闡述,下面資料借鑑網路資料僅供參考
比如:location /
if ($geoip_region = 「30」 ) }或者
if ($geoip_region = 30)
當ip來自廣東時候,把首頁重定向到home.html.
或者location /geoip/
當不確定具體是否有城市名可以用strings命令檢視字串,比如:
strings geolitecity.dat |grep -i guangzhou
這樣就匹配到了 guangzhou ,所以我們可以用 guangzhou這個城市名。
當然變數支援正則匹配,比如:
if ($geoip_region ~ 「(30|31)」)
我們測試時候可能不一定準,因為我們用的資料來源是免費的,具體可以在官網查詢:
nginx 安全鏈結及GeoIP模組
secure link module安全連線模組 對於訪問限制及防盜煉等的功能,如之前的防盜鍊是基於http refer來實現,但是該請求頭是可以在客戶端被改寫的,功能相對比較簡單但是不完善。而安全鏈結模組可以幫助我們實現比較高階精度的驗證。它利用的是後端加密的機制返還給前端,這樣來實現類似於數字加...
Nginx學習筆記 geoip模組(地域資訊)
基於ip位址匹配maxmind geoip二進位制檔案,讀取ip所在地域資訊。yum install nginx module geoip 1 區別國內外作http的訪問規則 國內訪問國內伺服器,國外訪問國外伺服器 2 區別國內城市地域作http訪問規則 可作就近訪問規則 1 首先需要在 etc n...
GeoIP的使用 PHP版
geoip介紹 什麼是gepip 所謂geoip,就是通過來訪者的ip,定位他的經緯度,國家 地區,省市,甚至街道等位置資訊。這裡面的技術不算難題,關鍵在於有個精準 的資料庫。有了準確的資料來源就奇貨可居賺點小錢,可是發揚合作精神,集體貢獻眾人享用是我們追求的。geoip如 何使用?首先我們需要資料...