|
|
|
|
移动端

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

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

作者:佚名来源:熊建刚的博客|2017-12-13 15:57

开发者盛宴来袭!7月28日51CTO首届开发者大赛决赛带来技术创新分享

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

发现问题

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

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

分析并解决问题

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

于是搜索了关于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 

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

【编辑推荐】

  1. CPU内核越多,虚拟服务器性能越强?
  2. 第二春,新拐点?服务器增长迎来新动
  3. 如何在两台服务器之间安全迁移MySQL数据库
  4. 学会Nginx,10倍提升你的Web应用性能!
  5. Linux下Nginx+多Tomcat负载均衡实现详解
【责任编辑:武晓燕 TEL:(010)68476606】


点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月最赞

视频课程+更多

热门职位+更多

读 书 +更多

Eclipse Web开发从入门到精通(实例版)

本书由浅入深、循序渐进地介绍了目前流行的基于Eclipse的优秀框架。全书共分14章,内容涵盖了Eclipse基础、ANT资源构造、数据库应用开发、W...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊