gpt4 book ai didi

python - 读取上游时 nginx 权限被拒绝 - 即使以 root 身份运行

转载 作者:太空狗 更新时间:2023-10-30 00:02:39 24 4
gpt4 key购买 nike

我有一个 flask 应用程序在 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

所以它不能从它刚刚创建的本地套接字中读取?

最佳答案

好的!所以我认为问题与 this bug 有关.似乎即使没有将 apparmor 配置为阻止访问容器内的套接字,它实际上也在做一些事情来阻止读取它们(尽管不是创建......)所以关闭容器的 apparmor(following these instructions)起作用修理它。

两个相关的行是:

sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start

sudo ln -s/etc/apparmor.d/usr.bin.lxc-start/etc/apparmor.d/disabled/

并添加

lxc.aa_profile = unconfined 

到容器配置文件。

注意:这些错误没有记录在任何 apparmor 日志中。

关于python - 读取上游时 nginx 权限被拒绝 - 即使以 root 身份运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com