NGINX无法连接到GUNICORN套接字

zujrkrfu  于 2023-11-17  发布在  Nginx
关注(0)|答案(2)|浏览(198)

好吧,我在这上面快疯了。我有一个Flask应用程序,我想在debian-12上用gunicorn+nginx部署。
当我尝试连接到主页时,我在浏览器和nginx错误日志中得到502 Bad Gateway

2023/09/07 18:15:36 [crit] 15569#15569: *1 connect() to unix:/home/admin/my_app/app.sock failed
(13: Permission denied) while connecting to upstream, client: XXX.XXX.XX.XXX, server: xxxx,
request: "GET / HTTP/1.1", upstream: "http://unix:/home/admin/my_app/app.sock:/", host:
"xxxxxx.yyy.zzz"

字符串
这就是我的配置:NGINX
在我的sites-available(并将其链接到sites-enabled)文件夹中:server { listen 80;

server_name xxxx xxxxx.yyy.zzz/;

location / {
      include proxy_params;
      proxy_pass http://unix:/home/admin/my_app/app.sock;
    }
}


注意:nginx以www-data用户身份运行

Gunicorn我在systemd上创建了一个服务(myapp.service):

[Unit]
Description=my app
After=network.target

[Service]
User=admin
Group=www-data
WorkingDirectory=/home/admin/my_app
Environment="PATH=/home/admin/my_app/venv/bin"
ExecStart=/home/admin/my_app/venv/bin/gunicorn --workers=2 --bind=unix:app.sock -m 777 main:app

[Install]
WantedBy=multi-user.


这是正常工作,这是systemctl状态的结果:

myapp.service - xxxx server
     Loaded: loaded (/etc/systemd/system/myapp.service; enabled; preset: enabled)
     Active: active (running) since Thu 2023-09-07 18:04:07 EDT; 31min ago
   Main PID: 15471 (gunicorn)
     CGroup: /system.slice/osgr-sales.service
             ├─15471 /home/admin/my_app/venv/bin/python3 /home/admin/my_app/venv/bin/gunicorn --workers=2 --bind=unix:app.sock -m 777 main:app
             ├─15472 /home/admin/my_app/venv/bin/python3 /home/admin/my_app/venv/bin/gunicorn --workers=2 --bind=unix:app.sock -m 777 main:app
             └─15473 /home/admin/my_app/venv/bin/python3 /home/admin/my_app/venv/bin/gunicorn --workers=2 --bind=unix:app.sock -m 777 main:app

Sep 07 18:04:07 xxxxx systemd[1]: Started myapp.service - xxxxx server.
Sep 07 18:04:07 xxxxx gunicorn[15471]: [2023-09-07 18:04:07 -0400] [15471] [INFO] Starting gunicorn 20.0.4
Sep 07 18:04:07 xxxxx gunicorn[15471]: [2023-09-07 18:04:07 -0400] [15471] [INFO] Listening at: unix:app.sock (15471)
Sep 07 18:04:07 xxxxx gunicorn[15471]: [2023-09-07 18:04:07 -0400] [15471] [INFO] Using worker: sync
Sep 07 18:04:07 xxxxx gunicorn[15472]: [2023-09-07 18:04:07 -0400] [15472] [INFO] Booting worker with pid: 15472
Sep 07 18:04:07 xxxxx gunicorn[15473]: [2023-09-07 18:04:07 -0400] [15473] [INFO] Booting worker with pid: 15473


一切似乎都很好,但每当我试图到达我的应用程序,我得到了上述“坏网关错误”。
似乎这一定是一些授权问题,但我不知道可能是什么,因为我在套接字上设置了777权限,应该工作,对吗?
这就是我到目前为止所尝试的:
1-将socket(app.sock)组改为www-data
2-将www-data用户添加到admin
3-手动将套接字所有者更改为www-data
4-将文件夹**/home/admin/my_app组更改为www-data**
这些都不起作用,我一直得到“坏网关”/(13:权限被拒绝)错误。请帮助。

wmvff8tz

wmvff8tz1#

我有一个类似的问题前一段时间,这是因为www-data没有读取权限/home/admin。
您应该检查. www-data是否有权导航到您的文件夹并读取.sock文件。

svdrlsy4

svdrlsy42#

正如FeanDoe所提到的,这是一个权限问题。
我在我的服务文件中将组从www-data更改为admin:
组=admin
现在一切正常

相关问题