解决Nginx服务返回500状态码问题

服务器
最近鼓捣博客服务器,不经意间误操作改了一些目录的用户组及权限,导致博客文件上传功能失败,周末检查了一天依然没有解决问题,在不经意间意识到了问题所在,其实有时候一些小问题会花费一大波时间去解决,于是博主记录本篇,总结一下发现问题,调试,解决问题的过程,希望以后解决问题能直指根本。

最近鼓捣博客服务器,不经意间误操作改了一些目录的用户组及权限,导致博客文件上传功能失败,周末检查了一天依然没有解决问题,在不经意间意识到了问题所在,其实有时候一些小问题会花费一大波时间去解决,于是博主记录本篇,总结一下发现问题,调试,解决问题的过程,希望以后解决问题能直指根本。

发现问题

首先是在12月9号发行博客文件上传功能失败,查看前端请求,发现是服务端返回500状态码,表明发生服务端内部异常:

如上图接口返回详情所示,nginx服务异常,服务暂时转移了,当前不可访问。

分析并解决问题

其实问题比较简单,但是奈何博主当时短路了,因为博主在浏览器直接访问该异常接口时,出现如下提示:

[[213140]]

于是搜索了关于wordpress关于Are you sure相关问题,结果跑偏了,跑去分析wordpress源码,分析上传文件php代码,分析php内存使用是否达到上限,结果分析完一下午过去了,发现其实nginx没有转发该上传请求至php-fpm服务,我应该首先去看nginx输出日志。

于是跑去查看nginx日志:

  1. vi /var/log/nginx/error.log 

哎,发现是空的,并没有异常日志,怎么回事?确认日志路径无误后就可以考虑是因为文件权限的原因了,执行ll或ls -al指令:

哎,果然,nginx文件目录所属用户是root,而nginx执行用户配置了nginx,于是将其修改成nginx服务配置文件内配置的用户:

  1. chown -R nginx /var/log/nginx 
  1. -R代表迭代设置目录及其子目录;
  2. 第二个参数为为目录指定的所属用户名;

另外设置nginx用户对于/var/log/nginx目录的权限等级:

  1. chmod -R 755 /var/log/nginx 

再次执行ll查看目录信息:

nginx输出日志文件权限没问题了,再次上传文件,发现依然返回500状态码,这时查看nginx异常日志文件:

  1. vi /var/log/nginx/error.log 

发现终于有日志了:

看到是权限问题Permission Denied,打开/var/lib/nginx/tmp/client_body/0000001失败,说明启动转接服务失败,那就需要修改/var/lib/nginx目录的权限,使用ll查看该目录信息,发现,果然所属用户被改为root了,于是再次设置:

  1. chown -R nginx /var/lib/nginx 

然后重启nginx服务:

  1. systemctl restart nginx 

再次上传文件,上传成功,问题得到圆满解决。

责任编辑:武晓燕 来源: 熊建刚的博客
相关推荐

2024-07-30 12:04:20

Nginx服务器

2023-10-08 07:15:54

NGINX网关参数

2015-02-11 15:06:41

微信SDK

2013-10-30 17:34:51

Nginx服务器软中断XEN虚拟

2011-03-01 13:40:45

500 OOPS

2011-11-28 22:45:19

Nginxsession

2010-03-24 09:25:36

Nginx配置

2023-03-14 07:39:13

返回值编写命令行工具

2010-04-15 14:33:47

删除Oracle服务

2024-08-20 07:47:12

AI零代码网关

2010-03-30 16:04:34

Linux Nginx

2010-03-24 17:45:29

Nginx异步代理

2018-01-16 10:38:03

Plesk面板Nginx

2024-02-27 08:14:51

Nginx跨域服务

2020-10-23 06:58:48

HTTP状态码服务器

2014-06-18 09:25:07

HTTP

2009-12-04 13:50:00

PHP服务端返回Jso

2022-06-01 12:00:54

HTTP状态码服务端

2019-02-26 14:43:50

http状态码前端

2013-03-25 10:23:24

路径扫描web路径扫描工具扫描
点赞
收藏

51CTO技术栈公众号