成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Nginx的geo2模塊實(shí)現(xiàn)獲取地理信息

IT那活兒 / 1731人閱讀
Nginx的geo2模塊實(shí)現(xiàn)獲取地理信息

點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!

圖片來源于網(wǎng)絡(luò)

監(jiān)控大屏實(shí)現(xiàn)地區(qū)性能指標(biāo)響應(yīng)時(shí)間展示,對(duì)外系統(tǒng)使用nginx作為訪問代理,通過在nginx上進(jìn)行獲取地理信息,將日志采集后在大屏進(jìn)行實(shí)時(shí)展示,本文介紹如何獲取地理信息。

Nginx+Geoip2可以實(shí)現(xiàn)獲取地理信息,請(qǐng)求IP的國家和城市信息,對(duì)于請(qǐng)求的IP進(jìn)行各種個(gè)性化Nginx配置。

準(zhǔn)備環(huán)

  • Nginx : 1.14.2
  • libmaxminddb-1.6.0
  • ngx_http_geoip2_module-3.3: 3.3
  • GeoIP數(shù)據(jù):GeoLite2-Country.mmdb  GeoLite2-City.mmdb (需要注冊(cè)官網(wǎng)獲取文件)

注:需要圖中這四個(gè)壓縮文件包的同學(xué)請(qǐng)留言獲取。
安裝訪問數(shù)據(jù)客戶端
sudo tar -xvf libmaxminddb-1.6.0.tar.gz
cd libmaxminddb-1.6.0
#安裝
sudo ./configure && sudo make && sudo make install
#加入lib path
sudo sh -c "echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf"
sudo ldconfig

Nginx添加geoip模塊

./configure --prefix=/data/app/nginx --sbin-
path=/data/app/nginx/sbin/nginx --conf-
path=/data/app/nginx/conf/nginx.conf --error-log-
path=/data/log/nginx/error.log --http-log-
path=/data/log/nginx/access.log --pid-path=/run/nginx.pid --
user=nginx --group=nginx --with-http_ssl_module --with-
http_stub_status_module --with-pcre --with-http_v2_module --
with-stream --with-http_gzip_static_module --add-dynamic-
module=/data/app/geo2db/ngx_http_geoip2_module-3.3
makemake install
安裝完成后,進(jìn)行nginx配置。
/data/app/nginx/sbin#./nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/data/app/nginx --sbin-
path=/data/app/nginx/sbin/nginx --conf-
path=/data/app/nginx/conf/nginx.conf --error-log-
path=/data/log/nginx/error.log --http-log-
path=/data/log/nginx/access.log --pid-path=/run/nginx.pid --
user=nginx --group=nginx --with-http_ssl_module --with-
http_stub_status_module --with-pcre --with-http_v2_module --
with-stream --with-http_gzip_static_module --add-dynamic-
module=/data/app/geo2db/ngx_http_geoip2_module-3.3

Nginx配置

#user nobody;
worker_processes  2;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

load_module modules/ngx_http_geoip2_module.so;


events {
worker_connections  4096;
}


http {
include       mime.types;
default_type  application/octet-stream;

log_format  main 1234mutouren "$http_x_forwarded_for" - $remote_addr - $remote_user [$time_local] "$request"
$status $body_bytes_sent "$http_referer"
"$http_user_agent" "$http_x_forwarded_for"
"$connection" "$request_time"
- "$geoip2_country_name_en" "$geoip2_city_name_en"
= "$geoip2_longitude" "$geoip2_latitude" ;
#access_log logs/access.log main;
log_format json_logs escape=json
{"@timestamp":"$time_iso8601",
"host":"$hostname",
"server_ip":"$server_addr",
"client_ip":"$remote_addr",
"remote_user":"$remote_user",
"xff":"$http_x_forwarded_for",
"domain":"$host",
"url":"$uri",
"referer":"$http_referer",
"upstreamtime":"$upstream_response_time",
"responsetime":"$request_time",
"request_method":"$request_method",
"status":"$status",
"size":"$body_bytes_sent",
"request_length":"$request_length",
"protocol":"$server_protocol",
"upstreamhost":"$upstream_addr",
"file_dir":"$request_filename",
"http_user_agent":"$http_user_agent",
#獲取國家英文名稱
"geoip2_country_name_en":"$geoip2_country_name_en",
"number":"$status",
#獲取城市英文名稱
"name":"$geoip2_city_name_en",
#獲取經(jīng)緯度
"logLat":"$geoip2_longitude,$geoip2_latitude"
};

sendfile        on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout  300;
client_body_buffer_size 15M;
client_body_temp_path clientpath 3 2;
client_max_body_size 30M;
gzip  off;
gzip_static on;
gzip_min_length 10k;
gzip_buffers 4 16k;
gzip_comp_level 6;
gzip_types *;
gzip_disable "MSIE [1-6].";
gzip_vary on;
# 配置解析的IP地址,作為獲取地理信息的IP地址:
map $http_x_forwarded_for $realip {
~^(d+.d+.d+.d+) $1;
default $remote_addr;
}
# 配置國家和城市檢索需要的數(shù)據(jù)文件:
#測(cè)試 mmdblookup --file /data/app/geo2db/GeoLite2-City.mmdb --ip 202.175.105.131
geoip2 /data/app/geo2db/GeoLite2-Country.mmdb {
auto_reload 5m;
$geoip2_metadata_country_build metadata build_epoch;
#國家編碼
$geoip2_country_code source=$realip country iso_code;
#國家英文名
$geoip2_country_name_en source=$realip country names en;
#國家中文名
$geoip2_country_name_cn source=$realip country names zh-CN;
}
geoip2 /data/app/geo2db/GeoLite2-City.mmdb {
$geoip2_metadata_city_build metadata build_epoch;
#城市英文名,大多是拼音,有重復(fù)情況
$geoip2_city_name_en source=$realip city names en;
#城市中文名,部分城市沒有中文名
$geoip2_city_name_cn source=$realip city names zh-CN;
#城市id,maxmaind 庫里的id,非國際標(biāo)準(zhǔn)
$geoip2_data_city_code source=$realip city geoname_id;
#經(jīng)度,longitude
$geoip2_longitude source=$realip location longitude ;
#維度,latitude
$geoip2_latitude source=$realip location latitude ;
}

#
 HTTPS server
#
server {
listen 443 ssl;
server_name XXX.XXX.com;
#       server_name XXX.XXX.com;

ssl_certificate cert/data.com.pem;
ssl_certificate_key cert/data.com.key;

ssl_session_timeout 5m;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256::!MD5;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

access_log /data/log/nginx/access.log json_logs;
location / {
try_files $uri $uri/ /index.html;
root /data/app/pos ;#靜態(tài)資源目錄
index index.html index.htm;
}
location /api/pos/ {
proxy_pass http://10.50.XXX.XXX:9999/;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /WeChat {
alias /data/app/WeChat ;#靜態(tài)資源目錄
index cfca.html;
}
}
server {
listen 80;
location /nginx_status {
stub_status on;
access_log off;
}
access_log logs/access.log json_logs;
#測(cè)試URI,可以返回地址信息,投產(chǎn)環(huán)境通過logformat打印到日志文件里獲取地理信息:

location = /geo {
default_type text/plain;
return 200 countryCode:$geoip2_country_code countryNameEn: $geoip2_country_name_en countryNameCn: $geoip2_country_name_cn cityNameEn: $geoip2_city_name_en cityNameCn: $geoip2_city_name_cn cityCode: $geoip2_data_city_code ;
}

}
}

訪問測(cè)試

#curl -H "X-Forwarded-For: 124.72.XXX.255,42.248.50.9,202.5.XX.71" 10.XX.133.159/geo
countryCode:CN
countryNameEn: China
countryNameCn: 中國
cityNameEn: xxzhou
cityNameCn: XX市
cityCode: 18x0821



END




本文作者:劉玉翀(上海新炬王翦團(tuán)隊(duì))

本文來源:“IT那活兒”公眾號(hào)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129438.html

相關(guān)文章

  • Drupal 8 結(jié)合Nginx實(shí)現(xiàn)文件上傳進(jìn)度,提高上傳文件性能

    摘要:自帶的上傳進(jìn)度功能,需要擴(kuò)展支持。于是想到利用的模塊來實(shí)現(xiàn)上傳進(jìn)度。接下來使用模塊替代的文件上傳功能,目的是提高文件上傳的性能。而且可以避免上傳大文件時(shí)執(zhí)行超時(shí)引起錯(cuò)誤。新建一個(gè)對(duì)象,把設(shè)置成剛上傳的文件。 Drupal 8 自帶的上傳進(jìn)度功能,需要PECL uploadprogress library擴(kuò)展支持。安裝后發(fā)現(xiàn)效果還是不太好,不知道什么原因,進(jìn)度條不能正常顯示,而且上傳較大...

    SwordFly 評(píng)論0 收藏0
  • Drupal 8 結(jié)合Nginx實(shí)現(xiàn)文件上傳進(jìn)度,提高上傳文件性能

    摘要:自帶的上傳進(jìn)度功能,需要擴(kuò)展支持。于是想到利用的模塊來實(shí)現(xiàn)上傳進(jìn)度。接下來使用模塊替代的文件上傳功能,目的是提高文件上傳的性能。而且可以避免上傳大文件時(shí)執(zhí)行超時(shí)引起錯(cuò)誤。新建一個(gè)對(duì)象,把設(shè)置成剛上傳的文件。 Drupal 8 自帶的上傳進(jìn)度功能,需要PECL uploadprogress library擴(kuò)展支持。安裝后發(fā)現(xiàn)效果還是不太好,不知道什么原因,進(jìn)度條不能正常顯示,而且上傳較大...

    keithxiaoy 評(píng)論0 收藏0
  • 數(shù)據(jù)脫敏大數(shù)據(jù)架構(gòu)設(shè)計(jì)

    摘要:需求背景系統(tǒng)有數(shù)據(jù)識(shí)別數(shù)據(jù)脫敏邏輯,支持可配置規(guī)則,自定義等,需要進(jìn)行異構(gòu)數(shù)據(jù)同步,大數(shù)據(jù)量。可用性分析可用性表格分析場(chǎng)景影響降級(jí)原因某臺(tái)數(shù)據(jù)同步下線無影響數(shù)據(jù)同步無狀態(tài),調(diào)度平臺(tái)重連其他的數(shù)據(jù)同步服務(wù)。 需求背景 系統(tǒng)有數(shù)據(jù)識(shí)別、數(shù)據(jù)脫敏邏輯,支持可配置規(guī)則,自定義等,需要進(jìn)行異構(gòu)數(shù)據(jù)同步,大數(shù)據(jù)量?,F(xiàn)在針對(duì)以下幾個(gè)需求進(jìn)行講解 1、支持冗余設(shè)計(jì)2、支持任務(wù)自動(dòng)分發(fā),支持自動(dòng)負(fù)載均衡...

    lavor 評(píng)論0 收藏0
  • Lua在Nginx應(yīng)用

    摘要:例如響應(yīng)部分通過的形式獲取或設(shè)置響應(yīng)頭信息。以某個(gè)狀態(tài)碼返回響應(yīng)內(nèi)容,狀態(tài)碼常量對(duì)應(yīng)關(guān)系見部分,也支持?jǐn)?shù)字形式的狀態(tài)碼。重定向當(dāng)前請(qǐng)求到新的,響應(yīng)狀態(tài)碼可選列表為默認(rèn)。具體內(nèi)容如下相關(guān)文章進(jìn)入的世界在的應(yīng)用 首發(fā)于 樊浩柏科學(xué)院 當(dāng) Nginx 標(biāo)準(zhǔn)模塊和配置不能靈活地適應(yīng)系統(tǒng)要求時(shí),就可以考慮使用 Lua 擴(kuò)展和定制 Nginx 服務(wù)。OpenResty 集成了大量精良的 Lua 庫...

    Mike617 評(píng)論0 收藏0
  • 使用 Nginx 優(yōu)化面向側(cè)面架構(gòu)

    摘要:從主關(guān)注點(diǎn)中分離出橫切關(guān)注點(diǎn)是面向側(cè)面的程序設(shè)計(jì)的核心概念。最終我們采用的是通過的模塊來將以面向側(cè)面的思路耦合。原文使用優(yōu)化面向側(cè)面的架構(gòu) 面向側(cè)面的程序設(shè)計(jì)(aspect-oriented programming,AOP),通過將解決特定領(lǐng)域問題的代碼從業(yè)務(wù)邏輯中獨(dú)立出來,從而提高代碼的可維護(hù)性。 從主關(guān)注點(diǎn)中分離出橫切關(guān)注點(diǎn)是面向側(cè)面的程序設(shè)計(jì)的核心概念。分離關(guān)注點(diǎn)使得解決特定領(lǐng)域...

    remcarpediem 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<