uWSGI忽略了uid,gid和chown-socket

我试图用nginx来使用uWSGI。 我遇到的根本问题是,我从nginx尝试连接到uWSGI套接字文件中得到“没有这样的文件或目录”。

当我使用下面的设置时,我期待套接字文件的权限改变。 但是,他们不是。 它继续显示uwsgi:uwsgi

nginx的错误是*17 connect() to unix:/tmp/myapp.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.1.122, server: , request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/tmp/myapp.sock:", host: "192.168.1.123:81"

myapp.ini(uwsgi)

 [uwsgi] chdir = /var/local/myapp plugins = python module = wsgi:app home = /var/local/virtualenv/myapp file = main.py daemonize = /var/log/uwsgi/myapp.log pidfile = /var/run/uwsgi/myapp.pid socket = /tmp/%n.sock chmod-socket = 777 chown-socket = webuser:nginx uid = webuser gid = nginx vacuum = true 

文件权限

 srwxrwxrwx. 1 uwsgi uwsgi 0 Jul 3 12:43 myapp.sock 

myapp.conf(nginx)

 server { listen 81; access_log /var/log/nginx/myapp_access.log; error_log /var/log/nginx/myapp_error.log; location / { try_files $uri @yourapplication; } location @yourapplication { include uwsgi_params; uwsgi_pass unix:/tmp/myapp.sock; } } 

我也试过这个:

 usermod -a -G nginx uwsgi usermod -a -G uwsgi nginx useradd webuser usermod -a -G nginx webuser usermod -a -G uwsgi webuser 

我试过这个:

 grep avc /var/log/audit/audit.log | audit2allow -M nginx semodule -i nginx.pp 

编辑

我试着将sock文件移动到/var/run/uwsgi/myapp.sock 。 在这种情况下,nginx告诉我: connect() to unix:/var/run/uwsgi/myapp.sock failed (13: Permission denied) while connecting to upstream

编辑2

而对于KIX,我试图使用TCP端口,而不是一个套接字文件。 在这种情况下,我可以使用curl -XGET http://localhost:8000并从uwsgi / python获取正确的HTTP响应。 然而,在nginx日志(当试图通过浏览器通过nginx进入时,我得到: *1 connect() failed (111: Connection refused) while connecting to upstream nginx文件configuration是这样的: uwsgi_pass uwsgi://localhost:8000;

您不能在/tmp插入进程间通信的套接字。

RHEL / CentOS 7,Fedora等使用私有/ tmp目录 ,这意味着为它configuration的每个守护进程(在本例中至less为nginx)与其他任何/tmp完全不同。

要解决此问题,请将套接字放在另一个目录中或使用TCP连接。

不要盲目audit2allow事情,不知道发生了什么事情。 你可能会打开一些安全漏洞。