用 Nginx 搭的网站突然打不开,屏幕上就显示个 “500 Internal Server Error”,刷新好几次都没用 —— 这时候你是不是急得想把服务器重启一百遍?其实遇到这种情况,瞎折腾没用,关键是找到错误日志,从日志里找线索。今天小编就手把手教你怎么查看 Nginx 的 500 错误日志,再结合日志里的常见错误说修复方法,就算是新手也能跟着做,一起往下看吧!
一、为啥非得看错误日志?直接修不行吗?
问:“我就想赶紧把网站弄好,为啥非得先看日志呀?”
答:这就像人生病了,得先知道是发烧还是咳嗽,才能对症下药。500 错误只是个 “服务器出错了” 的笼统提示,具体是权限不够、配置写错,还是程序有 bug,只有日志里才写得明明白白。不看日志就瞎改,可能改了半天,问题根本不在那儿。
小编之前帮朋友修网站,他说 “肯定是配置文件的问题”,结果我一看日志,是 PHP 程序里少了个括号 —— 你看,不看日志多耽误事。
二、Nginx 500 错误日志在哪?怎么打开?
问:“日志藏在服务器哪个角落呀?我找不到怎么办?”
答:日志位置其实很固定,按这步骤找,保证能找到。
- 先确定日志存放路径
Nginx 的日志路径一般在这两个地方(Linux 系统):
- 默认路径:/var/log/nginx/error.log(大部分服务器都用这个)
- 自定义路径:如果之前改过配置,打开 nginx.conf 文件,找 “error_log” 后面的路径,比如 “error_log /home/logs/nginx/error.log;”
- 用命令打开日志(新手也能学会)
登录服务器后,输入这两个命令就行:
- 查看最新日志:tail -f /var/log/nginx/error.log(输入后会实时显示新产生的日志)
- 搜索 500 错误:grep “500” /var/log/nginx/error.log(能找出所有包含 500 的日志记录)
要是你用的是 Windows 服务器,路径可能是 “C:\nginx\logs\error.log”,直接在文件夹里找到这个文件,用记事本打开就行。
三、日志里常见错误及对应修复方法
问:“日志里全是英文,我看不懂呀?常见的错误有哪些,怎么修?”
答:别担心,常见的就这几种,记住对应的修复方法就行。
日志里的错误提示 | 意思 | 修复方法 |
---|---|---|
permission denied | 服务器没权限访问文件 | 输入 “chmod 755 文件名”(把文件名换成实际的文件路径),给文件加权限 |
no such file or directory | 找不到要访问的文件 | 检查文件路径是不是写错了,比如把 “/usr/share” 写成 “/usr/shar”,改对路径就行 |
connect() failed (111: Connection refused) | 连接后端程序(如 PHP)失败 | 检查 PHP 是否启动,输入 “systemctl start php-fpm” 启动 PHP 服务 |
upstream timed out | 后端程序响应太慢 | 在 nginx.conf 里加 “proxy_read_timeout 60s;”,延长等待时间 |
- 权限不够(permission denied)
这是最常见的错误。比如日志里写 “open () “/usr/share/nginx/html/index.html” failed (13: Permission denied)”,就是说服务器没权限读 index.html 这个文件。
- 修复:输入 “chmod 755 /usr/share/nginx/html/index.html”,再输入 “chown nginx:nginx /usr/share/nginx/html/index.html”(把文件 owner 改成 Nginx 运行用户)。
- 配置文件语法错误
如果改完 nginx.conf 后出现 500 错误,日志里可能会有 “invalid number of arguments in “root” directive”,这说明配置项写错了。
- 修复:输入 “nginx -t” 检查配置,会提示 “nginx: [emerg] invalid number of arguments in “root” directive in /etc/nginx/nginx.conf:10”,意思是第 10 行的 root 指令写错了,找到那行改对就行。
四、要是日志里没线索,该怎么办?
问:“我把日志翻遍了,没找到 500 相关的记录,这咋整?”
答:这种情况很少见,但也有办法解决。
- 检查是否开启了日志功能
有些服务器可能没开错误日志,打开 nginx.conf,看看有没有 “error_log” 这行 —— 要是没有,加上 “error_log /var/log/nginx/error.log;”,然后输入 “nginx -s reload” 重启 Nginx,再访问网站,日志里就会有记录了。 - 试试通用修复技巧
要是实在找不到原因,先重启 Nginx(输入 “nginx -s reload”),很多临时错误重启后就好了;要是还不行,把最近改的配置恢复成原来的版本 —— 小编上次遇到个奇怪的 500 错误,就是把三天前的配置导回去,居然好了。
五、小编观点
查看 Nginx 500 错误日志,其实就像侦探查案,日志就是 “线索”,找到线索了,案子就破了一半。我觉得新手不用怕命令行,只要记住那两个查看日志的命令,多试几次就熟了。
另外,平时改配置前,最好先备份一下 nginx.conf,万一改出问题,能快速恢复。其实 500 错误看着吓人,大部分时候就是权限、路径这些小问题,只要耐心看日志,肯定能解决。希望这些方法能帮你少走弯路,下次遇到 500 错误,就不会手忙脚乱啦。