nginx的docker鏡像封禁地區(qū)IP的實(shí)現(xiàn)
一、拉取鏡像
此鏡像的Nginx 已經(jīng)集成了 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模塊中獲取客戶端真實(shí)ip地址:
map $http_x_forwarded_for $clientRealIp {
"" $remote_addr;
~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;
}如下圖:

3.從 github或者maxmind下載GeoLite2-City.mmdb文件。使 Nginx 結(jié)合 GeoLite2 數(shù)據(jù)庫來獲取地理位置。
GeoLite2-City.mmdb 是 MaxMind 提供的免費(fèi) IP 地理位置數(shù)據(jù)庫。
存在位置漂移與精度低,數(shù)據(jù)信息缺失:對于某些 IP 地址,尤其是手機(jī)移動網(wǎng)絡(luò)的 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
下載好文件后至該服務(wù)器目錄下。
4.添加響應(yīng)頭方便排查問題
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ū)域

到此這篇關(guān)于nginx的docker鏡像封禁地區(qū)IP的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)nginx docker封禁地區(qū)IP內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 在Nginx中實(shí)現(xiàn)動態(tài)封禁IP的三種主流方案
- Nginx如何自動封禁可疑Ip
- 詳解Nginx如何封禁IP和IP段
- Nginx實(shí)現(xiàn)動態(tài)封禁IP的步驟指南
- Nginx實(shí)現(xiàn)動態(tài)封禁IP的設(shè)計(jì)方案
- Nginx+Lua腳本+Redis 實(shí)現(xiàn)自動封禁訪問頻率過高IP
- Nginx結(jié)合Openresty通過Lua+Redis實(shí)現(xiàn)動態(tài)封禁IP
- Nginx IP封禁及自動封禁IP的實(shí)現(xiàn)
- nginx中封禁ip和允許內(nèi)網(wǎng)ip訪問的實(shí)現(xiàn)示例
- Nginx如何封禁IP和IP段的實(shí)現(xiàn)
- nginx ip黑名單動態(tài)封禁的例子
- Nginx利用Lua+Redis實(shí)現(xiàn)動態(tài)封禁IP的方法
相關(guān)文章
docker中Overlay網(wǎng)絡(luò)的使用小結(jié)
Docker Overlay網(wǎng)絡(luò)是跨主機(jī)通信的虛擬網(wǎng)絡(luò)驅(qū)動,基于分布式存儲實(shí)現(xiàn)動態(tài)路由與安全加密,本文就來詳細(xì)的介紹一下docker中Overlay網(wǎng)絡(luò)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2025-09-09
docker容器添加對外映射端口的實(shí)現(xiàn)
本文主要介紹了docker容器添加對外映射端口的實(shí)現(xiàn) ,從而實(shí)現(xiàn)容器與外部網(wǎng)絡(luò)的通信,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09
Docker學(xué)習(xí)筆記之容器查看啟動終止刪除的方法
本篇文章主要Docker學(xué)習(xí)筆記之容器查看啟動終止刪除的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12
使用DockerFile構(gòu)建docker鏡像掛載目錄,數(shù)據(jù)卷同步問題
這篇文章主要介紹了使用DockerFile構(gòu)建docker鏡像掛載目錄,數(shù)據(jù)卷同步問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
使用docker的python基礎(chǔ)鏡像時(shí)要指定patch版本原理
這篇文章主要為大家介紹了使用docker的python基礎(chǔ)鏡像時(shí)要指定patch版本原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

