讲师中心 微信公众号
AI工具推荐 视频效率加速

Nginx模块管理怎么使用geoip2解析访客省市信息

陌丽君_3179

陌丽君_3179

发布时间:2026-09-27 11:15:20

|

944人浏览过

|

来源于php中文网

原创

核心是编译安装ngx_http_geoip2_module模块、配置GeoLite2-City.mmdb数据库、在http块中定义$geoip2_data_province_name和$geoip2_data_city_name等中文变量,并通过log_format或fastcgi_param等注入日志或透传至后端。

nginx模块管理怎么使用geoip2解析访客省市信息

使用 Nginx 的 ngx_http_geoip2_module 模块解析访客的省市信息,核心是:编译安装模块、配置 GeoIP2 数据库、在 Nginx 配置中定义变量并使用。它比旧版 geoip 模块更准确、支持 IPv6 和更细粒度的地理数据(如省、市、区、经纬度等)。

一、确认 Nginx 已加载 geoip2 模块

该模块不是 Nginx 官方默认模块,需手动编译或通过包管理器安装带模块的版本:

  • Ubuntu/Debian:推荐用 nginx-extras(含 geoip2)或从 sury 仓库 安装;
  • CentOS/RHEL:可用 EPEL + nginx-mod-http-geoip2(RHEL 8+),或自行编译;
  • 源码编译:下载 模块源码,在 configure 时加 --add-dynamic-module=../ngx_http_geoip2_module,再 make && make install;
  • 验证是否加载成功:nginx -V 2>&1 | grep -o geoip2 或 nginx -V 2>&1 | grep -o with-http-geoip2-module,有输出即表示支持。

二、下载并配置 GeoIP2 City 数据库

MaxMind 提供免费的 GeoLite2 City 数据库(需注册账号下载),注意选择 .mmdb 格式(非旧版 .dat):

Nginx Config Linter
Nginx Config Linter

对 Nginx 配置文件进行语法检查、验证和安全、性能审计。

下载
  • 下载地址:https://www.php.cn/link/c4620e8a4aaa1f62e739608c2a866f9f;
  • 解压后得到 GeoLite2-City.mmdb,建议存放到固定路径,例如:/usr/share/GeoIP/GeoLite2-City.mmdb;
  • Nginx 需有读取权限(如 chown nginx:nginx /usr/share/GeoIP/GeoLite2-City.mmdb);
  • 在 http{} 块中添加配置:
geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb {
    $geoip2_data_country_code source=$remote_addr country iso_code;
    $geoip2_data_country_name source=$remote_addr country names zh-CN;
    $geoip2_data_province_code source=$remote_addr subdivisions 0 iso_code;
    $geoip2_data_province_name source=$remote_addr subdivisions 0 names zh-CN;
    $geoip2_data_city_name source=$remote_addr city names zh-CN;
    $geoip2_data_latitude source=$remote_addr location latitude;
    $geoip2_data_longitude source=$remote_addr location longitude;
}

说明:subdivisions 0 表示一级行政区(中国即“省”),部分城市(如北京、上海、重庆、天津)属于直辖市,也归在此层级;names zh-CN 启用中文名称(需数据库含中文翻译,GeoLite2 免费版支持)。

三、在 server 或 location 中使用解析结果

定义好变量后,可直接用于日志、响应头、条件判断或代理转发:

  • 写入 access_log(需先定义 log_format):
log_format geoip '$remote_addr - $remote_user [$time_local] '
                  '"$request" $status $body_bytes_sent '
                  '"$http_referer" "$http_user_agent" '
                  '$geoip2_data_country_name/$geoip2_data_province_name/$geoip2_data_city_name';
  • 透传到后端(如 PHP/FastCGI 或反向代理):
fastcgi_param GEOIP_COUNTRY_NAME $geoip2_data_country_name;
fastcgi_param GEOIP_PROVINCE_NAME $geoip2_data_province_name;
fastcgi_param GEOIP_CITY_NAME $geoip2_data_city_name;
  • 根据地域做简单跳转或限流(配合 map 或 if,但 if 在 location 中慎用):
map $geoip2_data_province_name $is_china_east {
    default 0;
    "江苏省" 1;
    "浙江省" 1;
    "上海市" 1;
}
# 然后在 location 中:
if ($is_china_east) {
    set $custom_header "east-china";
}

四、常见问题与注意点

  • IPv6 支持:模块原生支持,无需额外配置,只要数据库含 IPv6 记录(GeoLite2 默认包含);
  • 代理环境(如 CDN 或负载均衡):必须确保 $remote_addr 是真实客户端 IP,否则需配合 real_ip 模块和 set_real_ip_from 设置可信源,并启用 real_ip_header X-Forwarded-For;
  • 性能影响:mmdb 查询极快(微秒级),但频繁调用多个字段仍略增开销,建议按需定义变量,避免冗余字段;
  • 中文乱码:Nginx 日志或响应头若出现中文乱码,请确认系统 locale(如 zh_CN.UTF-8)已启用,且终端/查看工具支持 UTF-8;
  • 数据库更新:MaxMind 每月更新数据库,建议用脚本定期下载替换,并 reload Nginx(nginx -s reload)。

热门AI工具

更多
蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

383

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3067

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

5605

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

541

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1456

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3918

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

122

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

417

2026.01.13

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

120

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn