nginx的docker鏡像封禁地區(qū)IP的實現(xiàn)
一、拉取鏡像
此鏡像的Nginx 已經集成了 ngx_http_geoip2_module 模塊。
docker pull anroe/nginx-geoip2:1.22.1-geoip2-3.4
二、nginx.conf配置文件
1.加載geoip2模塊。
load_module /usr/lib/nginx/modules/ngx_http_geoip2_module.so;
如下圖所示:

2.http模塊中獲取客戶端真實ip地址:
map $http_x_forwarded_for $clientRealIp {
"" $remote_addr;
~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;
}如下圖:

3.從 github或者maxmind下載GeoLite2-City.mmdb文件。使 Nginx 結合 GeoLite2 數(shù)據(jù)庫來獲取地理位置。
GeoLite2-City.mmdb 是 MaxMind 提供的免費 IP 地理位置數(shù)據(jù)庫。
存在位置漂移與精度低,數(shù)據(jù)信息缺失:對于某些 IP 地址,尤其是手機移動網絡的 IP 或非熱門地區(qū)的 IP,可能無法解析出具體的城市信息,甚至國家信息也可能缺失。
geoip2 /etc/nginx/GeoLite2-City.mmdb {
auto_reload 5m;
$geoip2_city_name_en source=$clientRealIp city names en;
$geoip2_city_name_cn source=$clientRealIp city names zh-CN;
}新建目錄:
mkdir -p /home/app/geoip
下載好文件后至該服務器目錄下。
4.添加響應頭方便排查問題
add_header X-City-Code $geoip2_city_name_en always;
5.server模塊判斷ip區(qū)域
if ($geoip2_city_name_en ~* "(Guangzhou)") {
return 403;
}如下圖所示:

三.啟動nginx 容器
docker run --name nginx-geoip2 -p 443:443 -d -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/app/geoip/GeoLite2-City.mmdb:/etc/nginx/GeoLite2-City.mmdb --restart=always anroe/nginx-geoip2:1.22.1-geoip2-3.4
-v /home/app/geoip/GeoLite2-City.mmdb:/etc/nginx/GeoLite2-City.mmdb
將geoip文件映射到容器中,配置文件能引用到:

四、測試
命令: 61.146.4.192替換為客戶的ip地址。可以獲取到ip所屬區(qū)域。
curl -s -I --header "X-Forwarded-For: 61.146.4.192" localhost:443 | grep City
![]()
五.請求頭中獲取所屬區(qū)域

到此這篇關于nginx的docker鏡像封禁地區(qū)IP的實現(xiàn)的文章就介紹到這了,更多相關nginx docker封禁地區(qū)IP內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- 在Nginx中實現(xiàn)動態(tài)封禁IP的三種主流方案
- Nginx如何自動封禁可疑Ip
- 詳解Nginx如何封禁IP和IP段
- Nginx實現(xiàn)動態(tài)封禁IP的步驟指南
- Nginx實現(xiàn)動態(tài)封禁IP的設計方案
- Nginx+Lua腳本+Redis 實現(xiàn)自動封禁訪問頻率過高IP
- Nginx結合Openresty通過Lua+Redis實現(xiàn)動態(tài)封禁IP
- Nginx IP封禁及自動封禁IP的實現(xiàn)
- nginx中封禁ip和允許內網ip訪問的實現(xiàn)示例
- Nginx如何封禁IP和IP段的實現(xiàn)
- nginx ip黑名單動態(tài)封禁的例子
- Nginx利用Lua+Redis實現(xiàn)動態(tài)封禁IP的方法
相關文章
使用DockerFile構建docker鏡像掛載目錄,數(shù)據(jù)卷同步問題
這篇文章主要介紹了使用DockerFile構建docker鏡像掛載目錄,數(shù)據(jù)卷同步問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
使用docker的python基礎鏡像時要指定patch版本原理
這篇文章主要為大家介紹了使用docker的python基礎鏡像時要指定patch版本原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10

