之前的文档配置过proxy buffer 缓存(文章详见:https://blog.terrynow.com/2021/04/27/nginx-proxy-tomcat-or-php-fpm-large-traffic-cause-connect-reset-by-peer-soved/)后,有遇到一个问题:
500错误,打开日志文件/var/log/nginx/error.log 后发现错误信息:open() "/var/lib/nginx/tmp/client_body/0000000001" failed (13: Permission denied)
根据Permission denied很可能是和/var/lib/nginx/tmp/client_body的文件夹权限有关。
检查/var/lib/nginx/tmp的文件夹权限:
[root@localhost nginx]# ls -l /var/lib/nginx/ total 4 drwxrwx--- 7 nginx root 4096 Apr 13 14:26 tmp [root@localhost nginx]# ps aux|grep nginx root 25490 0.0 0.0 105448 2204 ? Ss 15:36 0:00 nginx: master process /usr/sbin/nginx tomcat 25491 0.0 0.0 105992 3500 ? S 15:36 0:00 nginx: worker process tomcat 25492 0.0 0.0 106184 3728 ? S 15:36 0:00 nginx: worker process tomcat 25493 0.0 0.0 105992 3740 ? S 15:36 0:00 nginx: worker process tomcat 25494 0.0 0.0 105992 3744 ? S 15:36 0:00 nginx: worker process # 看到上面实际的nginx运行用户是nginx
用户、用户组和nginx设置的用户不一样,因为之前要和tomcat整合,顺便在nginx.conf中修改了nginx的运行用户:
# 这里修改了用户,和/var/lib/nginx的文件的用户不一致 user tomcat; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid;
所以解决办法是修改/var/lib/nginx 的权限(这里尝试过修改/var/lib/nginx/tmp的用户和用户组不行,一定要到上一级):
# 修改用户和用户组 chown tomcat:tomcat -R /var/lib/nginx/
当然如果你的nginx运行用户不是tomcat,而是其他的(例如www用户),那你只要修改相应的用户,只要nginx运行用户和/var/lib/nginx的用户权限一致就可以了。
文章评论