nginx页面报500 Internal Server Error错误

前台页面报nginx 500 Internal Server Error ,后台应用程序没有任何日志,且在本地不报错,查看nginx日志,发现如下:

2013/07/09 12:00:24 [crit] 21816#0: *1233399 open() "/usr/local/nginx/ client_body_temp/0000000606" failed (13:  Permission denied), client: 10.2.9.129, server: crmtest.aty.sohuno.com, request: "POST /system/user/edit HTTP/1.1", host: "crmtest.aty.sohuno.com", referrer: "http://crmtest.aty.sohuno.com/system/user/init?op=edit&id=11160"

从日志上看,是因为Nginx操作client_body_temp时被拒绝了,因此首先查看nginx进程的运行用户:
发现是www
然后检查client_body_temp的所有者以及权限:
[@tj_10_116 nginx]# ll 

drwx------ 2 nobody root  4096 7月   9 12:03 client_body_temp

获悉该目录拥有者和所在组分别为nobody和root

因此使用chown命令更改文件拥有者和所在组:

chown -R www:www client_body_temp

或者修改权限

chmod 777 client_body_temp


分析下failed (13: Permission denied) while reading upstream问题的原因

首先看一下nginx 反向代理参数说明

proxy_connect_timeout 600; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 600; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_send_timeout 600; #后端服务器数据回传时间(代理发送超时)
proxy_buffer_size 32k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传

问题就出在proxy_temp_file_write_size上,当你的文件超过该参数设置的大小时,nginx会先将文件写入临时目录(缺省为nginx安装目下/proxy_temp目录),

如果nginx对prxoy_temp没有权限就会写不进去,结果就是只显示部分页面。

ps:在我的错误中,是上传文件时,因此如果是上传文件,则会到先写到client_body_temp目录下。


参考:

http://www.nginx.cn/695.html

你可能感兴趣的:(nginx)