Nginx站点访问日志分析海外访客

为什么要分析Nginx日志中的海外访客

很多站长搭建好网站后,只关注总访客数,却不清楚访客地域分布。
如果你的站点面向全球用户,或者想评估海外推广效果,就需要从Nginx访问日志里提取出海外访客的IP,再结合IP地理位置库判断访问来源。
手动逐条翻日志不现实,但用几条Linux命令就能自动完成统计。
本文会按零基础能直接照做的方式,教你完成整个流程。

准备工作:确认日志已开启并准备好基本工具

操作之前,先确认你的Nginx配置中已经开启了访问日志。
默认情况下,Nginx会在 /var/log/nginx/access.log 或你自定义路径下记录请求。
用下面命令检查日志文件是否存在且有内容:

ls -lh /var/log/nginx/access.log

如果文件大小为0或报错不存在,需要检查Nginx配置中的 access_log 指令。
对于宝塔面板用户,路径通常在 /www/wwwlogs/ 下,以网站域名命名的 .log 文件。

下一步,你需要安装一个用于IP地理定位的命令行工具 geoiplookup(基于GeoIP库)。
在CentOS/Debian系统下分别运行:

# CentOS / RHEL
yum install -y geoip geoip-devel

# Debian / Ubuntu
apt-get install -y geoip-bin

安装完成后可以用 geoiplookup 8.8.8.8 测试一下,如果返回国家信息说明可用。

实操步骤:从日志中统计海外访客

第一步:提取访客IP并去重

访问日志中每一行第一列通常是客户端IP,用awk即可提取。
我们可以先看几行日志确认格式:

head -5 /var/log/nginx/access.log

如果IP在第一列,运行下面命令获取所有IP并排序去重:

awk '{print $1}' /var/log/nginx/access.log | sort -u > iplist.txt

第二步:批量查询IP地理位置

写一个简单循环,对iplist.txt中的每个IP执行geoiplookup,并提取国家名称:

while read ip; do
  geoiplookup "$ip" 2>/dev/null | grep "Country:" | awk -F: '{print $2}' | sed 's/^ *//'
done < iplist.txt | sort | uniq -c | sort -rn

这条命令会输出类似:

 123 United States
  45 China
  23 Japan
...

数字代表来自该国家的IP数量(去重后)。
如果想统计访问次数(不去重),可以去掉第一步骤中的 sort -u,直接对每一行IP做定位:

awk '{print $1}' /var/log/nginx/access.log | while read ip; do
  geoiplookup "$ip" 2>/dev/null | grep "Country:" | awk -F: '{print $2}' | sed 's/^ *//'
done | sort | uniq -c | sort -rn

第三步:筛选出海外国家

从上面结果中排除“China”即可得到海外访客数据。
如果希望单独列出访客最多的海外国家,可以在管道后加上 grep -v "China"

高频问题与避坑指南

Q:geoiplookup 返回“IP Address not found”或“无法解析”? 可能原因:IP是私有地址或数据库太旧。
更新GeoIP数据库:

# CentOS
yum update geoip
# Debian
apt-get update && apt-get install --only-upgrade geoip-database

Q:日志文件很大,循环遍历太慢怎么办? 可以用 split 切分日志后并行处理,或者只分析最近1000行(tail -1000)。
也可以使用更高效的goaccess等工具。

Q:日志格式中IP不在第一列? 先查看nginx配置中的 log_format 定义,找到 $remote_addr 的位置,调整 awk 的列号。

避坑:权限问题。 普通用户可能无法读取 /var/log/nginx/access.log,要么用sudo执行,要么将文件复制到家目录。

避坑:日志轮转。 如果日志每天切割,分析前先确认当前日志文件是今天的还是昨天的。
可以用 ls -l /var/log/nginx/access.log 查看时间。

验证结果与延伸

跑完命令后,你会看到类似下方的输出(示例):

 432 United States
 187 United Kingdom
  98 Canada
  45 Australia
  23 Singapore

这表明海外访客主要来自美国、英国等国。
你可以根据统计结果决定是否需要优化CDN节点或调整内容语言。

如果你觉得命令行操作不够直观,也可以考虑将日志导入Web分析工具(如Matomo、GoAccess),它们内置了GeoIP功能。
但本文的方法不依赖任何额外服务,在任何Linux服务器上都能快速得到答案。

遇到异常情况时,建议先回看“避坑指南”部分,并检查每个命令的返回值。
按照上述步骤操作,你就能从Nginx站点访问日志中精准分析出海外访客的分布了。

分享到:
上一篇
AI中转站合规资质办理注意事项:从准备到避坑全流程
下一篇
WordPress缓存插件跨境站适配
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意