AWStats需Nginx日志格式匹配(如log_format awstats含$remote_addr、$time_local等字段)且配置中指定正确LogFile路径、LogFormat=1,再通过awstats.pl -update生成报告并配合cron每日自动更新。

AWStats 是一款开源的网站日志分析工具,支持 Nginx 日志解析并生成直观的流量统计报告(如访问量、IP 分布、热门页面、搜索引擎关键词等)。要让它正确工作,关键在于:Nginx 日志格式需匹配 AWStats 解析规则,且 AWStats 配置需指向正确的日志路径与时间范围。
1. 确保 Nginx 日志格式兼容 AWStats
AWStats 默认识别 Apache 的 Common Log Format(CLF),而 Nginx 默认日志格式接近但不完全一致。推荐在 /etc/nginx/nginx.conf 或站点配置中显式定义兼容格式:
log_format awstats '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$request_time $upstream_response_time';然后在 server 块中使用该格式记录访问日志:
access_log /var/log/nginx/example.com.access.log awstats;
⚠️ 注意:不要包含 $http_x_forwarded_for 或其他非标准字段(除非你自定义 AWStats 配置解析);时间格式必须为 [28/Jan/2024:10:22:34 +0800] 这类,即 log_format 中的 $time_local 已满足。
2. 安装并配置 AWStats
以 Ubuntu/Debian 为例:
- 安装 AWStats:
sudo apt install awstats - 生成对应站点的配置文件:
sudo cp /etc/awstats/awstats.conf /etc/awstats/awstats.example.com.conf - 编辑新配置文件:
sudo nano /etc/awstats/awstats.example.com.conf
重点修改以下参数:
LogFile="/var/log/nginx/example.com.access.log" LogType=W LogFormat=1 SiteDomain="example.com" HostAliases="example.com www.example.com" DNSLookup=1 DirData="/var/lib/awstats" DirCgi="/usr/lib/cgi-bin" DirIcons="/icons"
✅ LogFormat=1 表示使用标准 CLF 格式(与上面定义的 awstats log_format 兼容);若你添加了请求耗时等扩展字段,需改为 LogFormat=4 并手动调整 LogSeparator 和字段映射。
3. 生成首次统计并验证结果
运行命令构建初始数据库:
sudo /usr/lib/cgi-bin/awstats.pl -config=example.com -update
成功后会显示类似 Processed records: 12482。若报错,常见原因有:
-
权限问题:确保 AWStats 进程可读取日志文件(如
sudo chmod 644 /var/log/nginx/*.log或将www-data加入adm组) -
日志为空或路径错误:用
head -5 /var/log/nginx/example.com.access.log检查格式是否符合预期 -
时区不一致:AWStats 默认按服务器本地时间解析,若日志时间含时区(如
+0800),无需额外设置;否则可在配置中加TimeZone=8
4. 配置 Web 访问与自动更新
启用 CGI 支持(Nginx 需配合 fcgiwrap)或改用 Apache 提供 CGI 服务更简单。若坚持用 Nginx:
- 安装
fcgiwrap,配置 Nginx 将/awstats/路径转发给 fcgiwrap - 在
/usr/lib/cgi-bin/下创建软链接:sudo ln -s /etc/awstats/awstats.example.com.conf awstats.example.com.conf - 浏览器访问
http://your-server/awstats/awstats.pl?config=example.com
自动每日更新(推荐用 cron):
0 2 * * * /usr/lib/cgi-bin/awstats.pl -config=example.com -update >/dev/null
这样每天凌晨 2 点刷新统计,报告实时性足够一般运营需求。


















