【发布时间】:2015-03-14 04:25:54
【问题描述】:
我有一个烧瓶应用程序在 nginx 后面的 uWSGI 下运行。
*1 readv() failed (13: Permission denied) while reading upstream, client: 10.0.3.1, server: , request: "GET /some/path/constants.js HTTP/1.1", upstream: "uwsgi://unix:/var/uwsgi.sock:", host: "dev.myhost.com"
socket 上的权限是可以的(666,并且设置为和 nginx 相同的用户),事实上,即使我以 root 运行 nginx 仍然会出现这个错误。
flask app/uwsgi 正在正确发送请求。但它只是没有被 Nginx 读取。这是在 Ubuntu Utopic Unicorn 上。
知道如果 nginx 进程对套接字具有完全访问权限,在哪里权限可能会被拒绝吗?
作为一个复杂因素,该服务器运行在一个安装了 Ubuntu 14.04 的容器中。而且这个设置过去可以工作......但我最近将主机升级到 14.10......我完全可以理解这可能是问题的原因。但在我降级主机或升级容器之前,我想了解原因。
当我对产生此错误的工作人员运行 strace 时,我看到它发出的调用是这样的:
readv(14, 0x7fffb3d16a80, 1) = -1 EACCES (Permission denied)
14 好像是这个系统调用创建的文件描述符
socket(PF_LOCAL, SOCK_STREAM, 0) = 14
所以它不能从它刚刚创建的本地套接字中读取?
【问题讨论】: