Nginx不提供静态文件(Django + Gunicorn)权限被拒绝

时间:2016-09-23 00:54:27

标签: python django nginx static gunicorn

nginx.conf

server {
    listen 80;
    server_name serveraddress.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/ec2-user/projectname;
    }

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://unix:/home/ec2-user/projectname/projectname.sock;
    }
}

settings.py

STATIC_URL = '/static/'

STATICFILES_DIR = '/home/ec2-user/projectname/static/'

STATIC_ROOT = '/home/ec2-user/projectname/static/'

如果我使用带有manage.py runserver或gunicorn的Django开发服务器运行服务器,所有静态文件都可以正常工作,但是在端口80上使用nginx,没有任何静态文件可以工作;这让我相信这是一个涉及nginx的问题。是的,我已经运行了python manage.py collectstatic和' django.contrib.staticfiles'已安装。我使用的是RHEL 7(Centos 7)。

Nginx error.log

2016/09/22 20:44:33 [error] 322#0: *371 open() "/home/ec2-user/projectname/static/css/home.css" failed (13: Permission denied), client :##.###.##.##, server: ##.###.###.###, request: "GET /static/css/home.css HTTP/1.1", host: "##.###.###.###", referrer: "http://##.###.###.###/"

2 个答案:

答案 0 :(得分:0)

您似乎有权限被拒绝的问题。 (13: Permission denied)

nginx通常在其自己的nginx用户下运行,并且此用户可能没有访问位置/文件的权限,也无法为其提供服务。

答案 1 :(得分:-1)

我刚刚通过禁用SELinux修复了它,几天前使用nginx引起了另一个问题。