我有一个在uWSGI后面运行的应用程序,在nginx后面。nginx权限在读取上游时被拒绝 - 即使以根用户身份运行
*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"
在插座上的权限是好的(666,并设置为相同的用户nginx的),事实上,即使当我运行的nginx作为root我仍然得到这个错误。
烧瓶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
因此,它不能从它刚创建的本地套接字读取?
请问您能否添加更多关于修复的细节?似乎没有在我的情况下工作。 – 2015-10-21 15:44:18
我已将两条相关的行添加到我的答案中。但是,如果这些不能解决你的问题,那么你可能有一个无关的问题:( – aychedee 2015-10-21 15:49:56
不幸的是,我的系统上没有usr.bin.lxc-start文件,只有/etc/apparmor.d/docker。使用docker文件执行所描述的过程docker服务不再启动了'来自守护程序的错误响应:无法启动容器数据库:设置apparmor配置文件docker-default:没有这样的文件或目录 FATA错误:未能启动一个或更多容器' – 2015-10-21 15:52:06