由于 NGINX 中的此错误,我遇到了错误的网关错误:
2024/10/01 02:53:38 [crit] 383343#383343: *153 connect() to unix:/home/ubuntu/ip-whitelister/ip-whitelister.sock failed (13: Permission denied) while connecting to upstream
这是我的 NGINX 配置:
server {
server_name mydomain.com;
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/ip-whitelister/ip-whitelister.sock;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = mydomain.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name mydomain.com;
return 404; # managed by Certbot
}
首先,你必须检查套接字文件是否有效。
文件
/home/ubuntu/ip-whitelister/ip-whitelister.sock
似乎是一个符号链接。
ls -l /home/ubuntu/ip-whitelister/ip-whitelister.sock
检查实际位置在哪里,以及真实socket文件的权限设置。
然后你必须检查父目录的权限。
如果“/home/ubuntu”或“/home/ubuntu/ip-whitelister”以及真实位置的父目录的权限设置类似于750或770,则也无法访问该目录。
或者您可以将文件移动到公共目录,以便每个用户都可以访问它,仅用于测试。没关系。
权限设置完成后,如果NGINX仍然无法访问socket文件,也许你需要检查AppArmor。它可能会限制应用程序访问某些内容。
最后,如果它根本不起作用,并且您确实想发布您的网站,您可以尝试在本地主机接口上公开 Flask 端口,并为此进行反向代理。