赞同 5
分享

一个Nginx的权限拒绝错误

简介:如果你遇到(failed)net::ERR_CONTENT_LENGTH_MISMATCH或与这篇文章可以帮助到你,最近一段时间写的一个下载接口有一定几率出现没有response body的错误。
  2021.09.16
  Bug Man
  5
  117
  172.17.0.1
  中国.上海
 
 

最近一个下载接口出现了一个没有response body的错误,在看到网上一片关于(failed)net::ERR_CONTENT_LENGTH_MISMATCH报错的文章是,就顺着这个思路去排错,发现原来是Nginx的user必须是我们启动nginx的账户。

排错流程如下:

登录到服务器,nginx -t查看nginx的配置文件路径,在文件配置文件中找到error_log /xxx/xxx/error.log的错误日志路径。tail -n 200 /xxx/xxx/error.log命令查看错误日志最后200行错误信息,可以看到错误信息如下:

open() "/var/lib/nginx/proxy/1/05/0000000051" failed (13: Permission denied)

这种就是打开某个文件引发的权限拒绝,如果是这种报错就可以检查是不是nginx的配置文件顶部的配置是不是user ubuntu;管理用户与当前操作用户不相匹配,如果是的就请修改为启动Nginx的用户,修改好配置文件之后就可以用systemctl restart nginx命令来重启Nginx。到这里基本上问题应该就是解决了,由于我们服务器使用的是Ubuntu然后初始化这台服务器的开发者使用apt-get install nginx来安装的Nginx,这就导致默认情况下设置成为user ubuntu;,后面的操作就导致出现奇奇怪怪的错误。

这里我要说一点就是:每一个项目一定要有一个专门的运维或者后端来负责这个环境的搭建。我们这个项目的搭建比较仓促,后端服务使用的docker封装的(为了方便隔离环境),Nginx则是用的宿主机中的服务。