你刚搭了个网站,用户说打不开,或者后台接口老是502,这时候别急着重装服务——先翻翻服务器端日志,往往问题就藏在里面。
日志在哪儿?先找到它
不同服务默认日志路径不一样,常见几个地方:
- Nginx:通常在
/var/log/nginx/access.log(访问记录)和/var/log/nginx/error.log(报错信息); - Apache:多在
/var/log/apache2/access.log和/var/log/apache2/error.log(Ubuntu/Debian)或/var/log/httpd/access_log(CentOS); - 系统级错误:比如SSH登录失败、磁盘满、服务崩溃,查
/var/log/syslog(Debian系)或/var/log/messages(RHEL/CentOS)。怎么看?命令行三板斧够用
连上服务器后,不用开图形界面,终端里敲几行就能快速定位:
实时盯住最新请求(比如调试用户访问):
tail -f /var/log/nginx/access.log查最近10条报错(重点看error.log):
tail -n 10 /var/log/nginx/error.log搜关键词,比如“500”、“Connection refused”、“Permission denied”:
grep "500" /var/log/nginx/error.log | tail -n 5日志里到底写了啥?举个真例子
打开
access.log,一行典型记录长这样:192.168.1.100 - - [15/Jul/2024:14:22:33 +0800] "GET /api/user?id=123 HTTP/1.1" 200 342 "https://example.com/dashboard" "Mozilla/5.0 (Macintosh) ..."拆开看:
•192.168.1.100是访问者IP;
•[15/Jul/2024:14:22:33 +0800]是时间;
•GET /api/user?id=123是请求地址;
•200是状态码(正常),如果是502就说明后端挂了,404是路径错了,403是权限不够;
• 最后的342是返回内容字节数。error.log 更关键:直接告诉你哪崩了
比如看到这行:
2024/07/15 14:25:11 [crit] 1234#1234: *5 connect() to unix:/run/php/php8.1-fpm.sock failed (2: No such file or directory) while connecting to upstream一眼就明白:PHP-FPM 没启动,或者 sock 文件路径配错了。重启服务或检查配置就行。
小技巧:别硬盯屏幕
日志一多容易漏,可以边看边过滤:
• 只看POST请求:grep "POST" /var/log/nginx/access.log
• 查某个IP的所有行为:grep "203.123.45.67" /var/log/nginx/access.log
• 统计每小时访问量(按时间戳前13位分组):awk '{print $4}' /var/log/nginx/access.log | cut -d: -f1-2 | sort | uniq -c权限不够打不开?试试sudo
如果提示
Permission denied,别直接退出,加个sudo再试:sudo tail -n 20 /var/log/nginx/error.log大部分日志文件只有root可读,这是正常保护机制。