我们搜索了无数线程来解决这个问题,但似乎没有一个对我们有用。 任何人都可以帮我解决这个nginx权限问题吗? 我已经按照本文的建议安装了非root用户。
How To Serve Flask Applications with Gunicorn and Nginx on CentOS 7
但是,我们永远无法访问套接字和静态文件。
从tail -f /var/log/nginx/error.log
获取,访问套接字时始终会产生 502 Bad Gateway Error
*5 connect() to unix:/home/devops/article-prod/articles.sock failed (13: Permission denied)
在访问静态文件时生成 403 Forbidden Error
*14 open() "/home/devops/article-prod/assets/icons/types/article.png" failed (13: Permission denied)
以下是我们的权限路径
/home/devops/article-prod/
/home/devops/article-prod/articles.sock
/home/devops/article-prod/assets
/home/devops/article-prod/assets/icons
/home/devops/article-prod/assets/icons/types
/home/devops/article-prod/assets/icons/types/article.png
drwxr-xr-x. 4 root root 34 Mar 15 03:57 home
drwxr-xr-x. 6 devops nginx 172 Mar 15 05:38 devops
drwxr-xr-x. 6 devops nginx 197 Mar 15 07:56 article-prod
srwxrwx---. 1 devops nginx 0 Mar 15 06:03 articles.sock
drwxr-xr-x. 3 devops nginx 19 Mar 15 04:56 assets
drwxr-xr-x. 4 devops nginx 36 Mar 15 04:56 icons
drwxr-xr-x. 2 devops nginx 25 Mar 15 04:56 types
-rwxr-xr-x. 1 devops nginx 1718 Mar 15 04:56 article.png
FILE nginx.conf:
...
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
...
server {
listen 80;
server_name www.article.com;
location /assets/ {
root /home/devops/article-prod;
autoindex on;
}
location / {
proxy_pass http://unix:/home/devops/article-prod/articles.sock;
}
}
...
FILE articles.service:
[Unit]
Description=Gunicorn instance to serve articles
After=network.target
[Service]
User=devops
Group=nginx
WorkingDirectory=/home/devops/article-prod
Environment="PATH=/home/devops/article-prod/venv/bin"
ExecStart=/home/devops/article-prod/venv/bin/gunicorn --workers 3 --bind unix:articles.sock -m 007 wsgi
[Install]
WantedBy=multi-user.target
我也这样做是为了确保devops用户在nginx组内
sudo usermod -a -G devops nginx
甚至其他方面
sudo usermod -a -G nginx devops
但仍然无效。
任何帮助都会非常感激。
答案 0 :(得分:2)
你试过禁用SELINUX吗?运行以下命令检查SELINUX状态:
buildSequence { val r = Random(); while(true) yield(r.nextInt(24)) }
.take(10)
.map{(it+ 65).toChar()}
.joinToString("")
如果状态为$ sudo sestatus
,您可以通过运行以下来禁用它(临时):
enabled
并修改文件$ sudo setenforce 0
,然后将/etc/sysconfig/selinux
更改为SELINUX=enforcing
以永久禁用该文件。
如果需要,可以重新启动服务器。
希望这会对你有所帮助