ps 之所以是"之一",是因为nginx 500 错误的原因有很多,具体还是要看错误日志
诗朗诵——《宕 机》
前几天阿里云因为全球变暖的原因
突然宕机了
阿里云启动了自救服务
帮我重启
我寻思
回家重启一下nginx和几个后端服务器不就完了
但人生不是一路平坦
重启nginx后,网站前端页面访问正常,几个GET请求也正常
提交到POST接口时,出现nginx 500错误
首先排除法,排除不是跨域问题,因为之前都是正常的,
而且强迫症又去检查了一下,nginx里也设置了跨域
location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
}
那就是和宕机有关系
- 首先查看nginx 的错误日志位置
我的nginx 放在/usr/local
下
查看配置文件
# cat /usr/local/nginx/conf/nginx.conf
事后诸葛表示:注意到这两行
user www www;
error_log /home/wwwlogs/nginx_error.log crit;
- 查看错误日志
# cat /home/wwwlogs/nginx_error.log
我这里报错的是一个临时文件没有权限,
*82 open() "/var/lib/nginx/tmp/client_body/0000000003" failed (13: Permission denied), client:xxxxxxxx
不知道重启个服务器而已 怎么就突然没权限了
- 总之先查看这个目录的权限用户
# cd /var/lib/nginx/tmp/
# ls -l
drwx------ 2 www root 4096 May 9 01:39 client_body
是www 和 root 用户
我 nginx 启动服务的是root用户,工作用户也是root, 不懂为什么还有root不能访问的文件,总之先试试
- 把
nginx.conf
里的user 加上root
user root www;
- 然后重启nginx
# nginx -s stop
# nginx -c /usr/local/nginx/conf/nginx.conf
# nginx -s reload
就莫名可以了
原理大概就是这样