限制国外ip访问网站

1.安装带GeoIP模块的Nginx

bash 复制代码
sudo apt update && sudo apt install nginx-full -y

安装后,用 nginx -V 2>&1 | grep geoip 检查是否包含相关模块。

2. 获取GeoIP数据库

访问 MaxMind官网 注册账号,登录后下载免费的 GeoLite2-Country.mmdb 文件。然后将数据库文件上传到服务器,例如 /etc/nginx/geoip/ 目录

3.配置Nginx拦截规则

在Nginx配置的 http 块中,添加 geoip2 配置,创建变量 $geoip2_data_country_code,它会存储来访IP的国家代码。

bash 复制代码
http {
    geoip2 /etc/nginx/geoip/GeoLite2-Country.mmdb {
        auto_reload 5m;
        $geoip2_data_country_code country iso_code;
    }
    # ... 其他配置
}

在需要拦截的 server 或 location 块中,通过 if 语句判断国家代码,返回403禁止访问。例如,以下配置只允许中国(CN)的IP访问,其他国家则会被拒绝。

bash 复制代码
server {
    listen 80;
    server_name your-domain.com;
    if ($geoip2_data_country_code != 'CN') {
        return 403;
    }
    # ... 其他配置
}

4.测试与验证

完成配置后,执行 sudo nginx -t 测试配置文件是否有语法错误。若显示 syntax is ok,再执行 sudo systemctl reload nginx 平滑重载配置。可以通过VPN等工具更换到不同国家的IP进行访问测试。

相关推荐
你住过的屋檐5 小时前
【Nginx】linux上安装nginx
linux·运维·nginx
liangshanbo12157 小时前
Nginx 进程管理命令深度面试题解析
java·nginx·面试
weixin_5112552110 小时前
NGINX常用配置
linux·服务器·nginx
痕迹运维16 小时前
Nginx Docker容器化安装
nginx
烬羽18 小时前
Dockerfile 是"做奶茶的配方"?用 todos 全栈项目看懂 Docker 构建与发布
nginx·docker·nestjs
meilindehuzi_a19 小时前
从浏览器输入 URL 到页面显示:DNS、Nginx、后端与 CDN 全链路解析
运维·nginx
NGINX开源社区19 小时前
使用 F5 NGINX Gateway Fabric 实现 AI 交付标准化
nginx·gateway·fabric
翔云1234562 天前
在nginx中,proxy_next_upstream off是什么含义
nginx
虎王物联2 天前
Nginx反向代理实现IoT设备HTTPS接入:从证书配置到MQTT over WebSocket实战
运维·物联网·nginx·https
Linux-lucky2 天前
28-Linux学习之旅之Maven与Nexus制品库
linux·运维·学习·nginx·tomcat·maven