Ubuntu系统Nginx环境安装AWStats遇404错误求助
嘿,我之前在Ubuntu+Nginx环境搭AWStats也碰到过一模一样的404问题,给你梳理几个必查的点,大概率能解决:
1. 先确认文件路径是否匹配
你配置里写的root /home/myname/stats.mydomain.com/public;,先去这个目录看看有没有AWStats的相关文件——通常AWStats默认安装在/usr/lib/cgi-bin/awstats/或者/var/www/cgi-bin/,如果你的public目录是空的,那肯定会404。要么把root改成AWStats的实际安装路径,要么把AWStats的文件软链到这个public目录里。
2. 必须配置CGI处理(核心!)
AWStats是Perl CGI脚本,Nginx本身不处理CGI,得配合fcgiwrap来运行。如果教程里提了这个但你没配置好,这是最常见的原因:
- 先装fcgiwrap:
sudo apt install fcgiwrap - 然后在你的
server块里添加这段location配置(根据你的AWStats路径调整):
location ~ ^/awstats/ { root /usr/lib/cgi-bin; fastcgi_pass unix:/var/run/fcgiwrap.socket; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
要是你的AWStats脚本在/var/www/cgi-bin/,就把root改成这个路径。
3. 检查AWStats站点配置文件是否存在
每个域名的AWStats配置文件一般在/etc/awstats/下,比如awstats.stats.mydomain.com.conf。用命令确认一下:ls /etc/awstats/,如果没有这个文件,赶紧运行生成脚本:
sudo awstats_configure.pl
跟着向导走,记得指定你Nginx站点的访问日志路径(比如/var/log/nginx/mydomain.com.access.log)。
4. 手动测试AWStats脚本能不能跑
先在服务器本地运行脚本,排除脚本本身的问题:
sudo perl /usr/lib/cgi-bin/awstats/awstats.pl -config=stats.mydomain.com -update
如果运行成功,会提示更新统计数据;要是报错,比如权限不够或者配置错了,先把这些问题解决了再看Nginx的配置。
5. 验证Nginx配置并重启
改完配置一定要先检查语法:
sudo nginx -t
看到test is successful再重启Nginx:
sudo systemctl restart nginx
6. 看错误日志找具体原因
你配置里的error_log /var/log/nginx/stats.mydomain.com.error.log;,直接看这个日志,里面会写清楚404的具体原因——是文件找不到,还是权限不足,还是CGI处理失败:
tail -f /var/log/nginx/stats.mydomain.com.error.log
先把这些步骤过一遍,尤其是CGI配置和路径匹配的问题,这俩是最容易踩的坑。要是还不行,把你完整的subdomain.conf内容和错误日志里的具体报错贴出来,我再帮你细化排查。
内容的提问来源于stack exchange,提问作者JSCRB

