nginx 出现 13: Permission denied

简介: <p>原文地址:<a target="_blank" href="http://www.nginx.cn/695.html">http://www.nginx.cn/695.html</a></p> <p><br></p> <p></p> <p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bo

原文地址:http://www.nginx.cn/695.html


前段时间把程序员的wordpress升级到3.5.1,本身如果没有特别的插件,在后台更新就能完成。

更新完成后在后台发布文章,编辑器不能点击可视化标签,只能显示html标签,看了下js控制台提示ReferenceError: tinyMCE is not defined 3.5。

直觉以为升级哪里有问题,简单粗暴的重装了,可是还是不行,这时候就觉得可能是nginx哪里配置的问题了。

查看了一下日志文件,发现有下面的错误提示:

2013/03/13 01:22:17 [crit] 3331#0: *10 open() "/usr/local/lnmp/nginx/fastcgi_temp/3/00/0000000003" failed (13: Permission denied) while reading upstream, client: 124.42.13.230, server: 264.cn, request: "GET /wp-admin/load-scripts.php?c=0&load%5B%5D=jquery,utils,plupload,plupload-html5,plupload-flash,plupload-silverlight,plupload-html4,json2&ver=3.5.1 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "264.cn", referrer: "http://www.nginx.cn/wp-admin/post-new.php"

很明浏览器只加载了部分页面,原因是Permission denied。

首先确认工作进程(worker process)的用户:

检查配置文件nginx.conf的user指令

user  www-data;

后者执行命令

#ps aux | grep "nginx: worker process" | awk '{print $1}'

www-data

都可以得到nginx工作进程的运行用户

 

检查nginx的proxy_temp目录的所有者,

drwx------  2 root root   4096 Mar  3 03:28 proxy_temp

可以看到proxy_temp的所有者不是www-data,修改目录所有者为www-data即可。

chown -R www-data:www-data proxy_temp

 

通过以上的步骤,wordpress就可以正常的显示,不会出现后台的js错误了。

分析下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没有权限就会写不进去,结果就是只显示部分页面。

我遇到这个案例用工具查看了一下,post-new.php这个页面大小事94,超过了64k就要符合我们上面的分析。


目录
相关文章
|
应用服务中间件 nginx 开发工具
Nginx 13: Permission denied 解决方案
本文首发于我的个人博客:尾尾部落 今天在用uwsgi+nginx在部署flask应用时,遇到502的错误,vim /var/log/nginx/error.
3138 0
CND
|
应用服务中间件 PHP nginx
|
Web App开发 监控 应用服务中间件
|
2天前
|
移动开发 前端开发 JavaScript
前端vue2、vue3去掉url路由“ # ”号——nginx配置(一)
前端vue2、vue3去掉url路由“ # ”号——nginx配置
60 0
|
2天前
|
JavaScript 前端开发 应用服务中间件
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
25 0
|
2天前
|
前端开发 JavaScript 应用服务中间件
前端vue2、vue3去掉url路由“ # ”号——nginx配置(二)
前端vue2、vue3去掉url路由“ # ”号——nginx配置
64 0
|
1天前
|
负载均衡 应用服务中间件 nginx
解决nginx配置负载均衡时invalid host in upstream报错
在Windows环境下,配置Nginx 1.11.5进行负载均衡时遇到问题,服务无法启动。错误日志显示“invalid host in upstream”。检查发现上游服务器列表中,192.168.29.128的主机地址无效。负载均衡配置中,两个服务器地址前误加了&quot;http://&quot;。修正方法是删除上游服务器列表和proxy_pass中的&quot;http://&quot;。问题解决后,Nginx服务应能正常启动。
31 4
解决nginx配置负载均衡时invalid host in upstream报错
|
2天前
|
应用服务中间件 nginx
nginx配置集群轮训策略
nginx配置集群轮训策略
14 0