培武兄弟反馈多次,他发的笔记以附件的形式在论坛上,近期很多人反馈笔记不能下载。 今天我还好有时间就特意找了一下这个问题。 之前我测试的不够充分总以为可以下载,其实下载的只是一个空文件而已。打开时是会报错的。
既然有问题,就一定要找到原因。起初怀疑是nginx.conf 配置哪里有问题,于是一项一项测试,调节各种缓存、超时时间等参数,无果。
既然,现象不能猜到,那就借助于log吧,因为之前有过调整nginx错误日志级别的经历,所以,这次也调一下。把错误日志调成debug,该级别会记录所有的日志。 (后来,发现其实不用调,也会记录下面发现的日志)
调整日志级别的方法是: 修改nginx.conf 把
error_log /var/log/nginx/error.log ;
改为
error_log /var/log/nginx/error.log debug;
重启完nginx服务后,发现了关键日志:
*196972 open() "/usr/local/nginx/fastcgi_temp/2/21/0000005212" failed (13: Permission denied) while reading upstream, client: 222.161.220.25, server: www.aminglinux.com, request: "GET /bbs/forum.php?mod=attachment&aid=MTAzNXw5OGZjOTJjOHwxNDIwNzA1NTM2fDQxNTZ8NzI4Mg%3D%3D HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.aminglinux.com"
这条日志,就是我在下载附件,它竟然提示无权限。
回头想了一下,之前我曾经修改过nginx的运行帐号,跟之前的默认帐号有所不同,所以肯定是我修改运行账户引起的,而且推敲一下故障发生的时间也正好可以对应上,于是乎,问题很顺利地解决了,只需修改目录/usr/local/nginx/fastcgi_temp/ 的所属主即可。
chown -R apache /usr/local/nginx/fastcgi_temp/
重启nginx后,问题彻底解决。 这里要说一下,fastcgi_temp 这个目录是一个缓存临时目录,下载附件的时候会用到它,默认该目录的所属主就是nginx的启动帐号,在nginx.conf 中是有配置的。
既然有问题,就一定要找到原因。起初怀疑是nginx.conf 配置哪里有问题,于是一项一项测试,调节各种缓存、超时时间等参数,无果。
既然,现象不能猜到,那就借助于log吧,因为之前有过调整nginx错误日志级别的经历,所以,这次也调一下。把错误日志调成debug,该级别会记录所有的日志。 (后来,发现其实不用调,也会记录下面发现的日志)
调整日志级别的方法是: 修改nginx.conf 把
error_log /var/log/nginx/error.log ;
改为
error_log /var/log/nginx/error.log debug;
重启完nginx服务后,发现了关键日志:
*196972 open() "/usr/local/nginx/fastcgi_temp/2/21/0000005212" failed (13: Permission denied) while reading upstream, client: 222.161.220.25, server: www.aminglinux.com, request: "GET /bbs/forum.php?mod=attachment&aid=MTAzNXw5OGZjOTJjOHwxNDIwNzA1NTM2fDQxNTZ8NzI4Mg%3D%3D HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.aminglinux.com"
这条日志,就是我在下载附件,它竟然提示无权限。
回头想了一下,之前我曾经修改过nginx的运行帐号,跟之前的默认帐号有所不同,所以肯定是我修改运行账户引起的,而且推敲一下故障发生的时间也正好可以对应上,于是乎,问题很顺利地解决了,只需修改目录/usr/local/nginx/fastcgi_temp/ 的所属主即可。
chown -R apache /usr/local/nginx/fastcgi_temp/
重启nginx后,问题彻底解决。 这里要说一下,fastcgi_temp 这个目录是一个缓存临时目录,下载附件的时候会用到它,默认该目录的所属主就是nginx的启动帐号,在nginx.conf 中是有配置的。
编辑回复