Nginx的GeoIp模組的應用與使用

2021-09-21 03:11:51 字數 3613 閱讀 1691

使用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如 何使用?首先我們需要資料...