如何修复 Nginx 与套接字的连接失败(权限被拒绝)

斜线3b

我正在关注有关how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-18-04 的教程

当我尝试连接时,Nginx 给了我这个错误:

2019/05/10 17:21:03 [crit] 922#922: *22 connect() to 
unix:/var/www/patria/flask/pirata.sock failed (13: Permission denied) 
while connecting to upstream, client: my_ip_address, server: 
digital_ocean_ip, request: "GET / HTTP/1.1", upstream: 
"http://unix:/var/www/patria/flask/pirata.sock:/", host: "digital_ocean_ip"

注意:套接字路径中没有拼写错误

以下是套接字权限:

root@ageispolis:/var/www/patria/flask# ll pirata.sock
srwxrwxr-- 1 slash3b www-data 0 May 10 16:43 pirata.sock=

奔跑的枪炮:

root@ageispolis:/var/www/patria/flask# ps -aux|grep gunicorn
slash3b    863  0.0  2.2  60000 22304 ?        Ss   16:43   0:00 /var/www/patria/pirata/bin/python3.6 /var/www/patria/pirata/bin/gunicorn --workers=3 --bind unix:pirata.sock -m 007 wsgi:pirata
slash3b   1036  0.0  2.7  99884 28024 ?        S    16:43   0:00 /var/www/patria/pirata/bin/python3.6 /var/www/patria/pirata/bin/gunicorn --workers=3 --bind unix:pirata.sock -m 007 wsgi:pirata
slash3b   1040  0.0  2.7  99884 28024 ?        S    16:43   0:00 /var/www/patria/pirata/bin/python3.6 /var/www/patria/pirata/bin/gunicorn --workers=3 --bind unix:pirata.sock -m 007 wsgi:pirata
slash3b   1041  0.0  2.7  99904 28024 ?        S    16:43   0:00 /var/www/patria/pirata/bin/python3.6 /var/www/patria/pirata/bin/gunicorn --workers=3 --bind unix:pirata.sock -m 007 wsgi:pirata
root      3008  0.0  0.1  13136  1056 pts/1    S+   17:39   0:00 grep --color=auto gunicorn

这是systemd服务文件:

root@ageispolis:/var/www/patria/flask# cat /etc/systemd/system/pirata.service 
[Unit]
Description=Gunicors instance to serve pirata.com
After=network.target

[Service]
User=slash3b
Group=www-data
WorkingDirectory=/var/www/patria/flask
Environment="PATH=/var/www/patria/pirata/bin"
ExecStart=/var/www/patria/pirata/bin/gunicorn --workers=3 --bind unix:pirata.sock -m 007 wsgi:pirata

[Install]
WantedBy=multi-user.target

Nginx 配置文件:

root@ageispolis:/var/www/patria/flask# cat /etc/nginx/sites-enabled/pirata 
server {
    listen 80;
    server_name digital_ocean_ip;

    location / {
        include proxy_params;
        proxy_pass http://unix:/var/www/patria/flask/pirata.sock;
    }
}

运行 nginx:

root@ageispolis:/var/www/patria/flask# ps -aux|grep nginx
root       921  0.0  0.1 140628  1504 ?        Ss   16:43   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data   922  0.0  0.6 143300  6164 ?        S    16:43   0:00 nginx: worker process
root      3116  0.0  0.0  13136  1008 pts/1    S+   17:46   0:00 grep --color=auto nginx

所以据说 nginx worker (www-data) 可以访问套接字,但看起来没有?

当我将套接字权限设置为 777 时,它不起作用。

我不明白发生了什么。至少以某种方式调试这个unix套接字会很好。我似乎可以使用nc -U /path_to_socket连接到它socat但我不明白如何调试它并发送请求。

请帮忙!

更新:我找到了一种卷曲套接字的方法!

root@ageispolis:/var/www/patria/flask# curl -H --unix-socket pirata.sock http
curl: (6) Could not resolve host: pirata.sock
curl: (6) Could not resolve host: http
root@ageispolis:/var/www/patria/flask# curl -v  --unix-socket pirata.sock http
* Rebuilt URL to: http/
*   Trying pirata.sock...
* Connected to http (pirata.sock) port 80 (#0)
> GET / HTTP/1.1
> Host: http
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: gunicorn/19.9.0
< Date: Fri, 10 May 2019 19:03:17 GMT
< Connection: close
< Content-Type: text/html; charset=utf-8
< Content-Length: 17326
<
<!doctype html>
<html lang="en">

<head>
...

无论哪种方式,nginx 仍然因错误而失败。

斜线3b

非常感谢金属的提示!

因此,drwxrw-r-- 5 slash3b www-data无论如何,我与之抗争的最终权限都不起作用。然后我做了su - www-data -s /bin/bash并成为 www-data 用户,我试图列出套接字目录中的文件,但它给了我权限错误。

因此,解决方案是授予 www-data 用户对带有套接字文件的文件夹执行的权限。我没有意识到必须为此启用执行位,这是一个多么愚蠢的错误:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尽管套接字权限设置为777,但套接字的nginx错误失败(13:权限被拒绝)

来自分类Dev

权限被拒绝-Nginx和uwsgi套接字

来自分类Dev

Nginx + uWsgi + Django'连接到上游时权限被拒绝'(套接字)

来自分类Dev

Nginx永久权限修复

来自分类Dev

如何修复nginx包?

来自分类Dev

如何设置失败连接的套接字超时

来自分类Dev

如何解决在(13:权限被拒绝)重命名()时Nginx dav PUT请求失败的问题?

来自分类Dev

如何在Python中处理套接字“连接被拒绝”异常?

来自分类Dev

Nginx stat()失败(13:权限被拒绝)

来自分类Dev

Nginx 权限被拒绝连接到 .socket

来自分类Dev

如何修复amvavis报告clamav的“权限被拒绝”

来自分类Dev

使用csshX时如何修复“权限被拒绝”

来自分类Dev

如何修复 [Errno 13] 权限被 openpyxl 拒绝

来自分类Dev

如何连接到nginx?

来自分类Dev

如何修复加密失败?

来自分类Dev

如何为套接字传递Nginx代理URL

来自分类Dev

如何在nginx / HHVM中配置UNIX套接字?

来自分类Dev

如何为套接字传递Nginx代理URL

来自分类Dev

Nginx对Gitlab-workhorse套接字需要什么权限?

来自分类Dev

nginx代理访问uwsgi套接字的正确权限?

来自分类Dev

Nginx错误:(13:权限被拒绝)连接到上游时

来自分类Dev

wsgi nginx错误:连接到上游时权限被拒绝

来自分类Dev

HHVM + NGinx连接被拒绝

来自分类Dev

Nginx + GraphQL连接被拒绝

来自分类Dev

Nginx HTTPS连接被拒绝

来自分类Dev

如何修复损坏的Perl权限?

来自分类Dev

java.net.SocketException:套接字失败:EACCES(权限被拒绝)

来自分类Dev

通过Nginx提供静态文件时如何修复404错误

来自分类Dev

如何修复“断言失败”-FireQuickVerifySSL

Related 相关文章

热门标签

归档