it-swarm.com.de

Nginx wirft ein Verbot für statische Dateien

Ich habe eine Django-App, Python 2.7 mit Gunicorn und Nginx.

Nginx wirft einen 403 Forbidden Error, wenn ich versuche, etwas in meinem static-Ordner anzuzeigen @:

/home/ubuntu/virtualenv/myapp/myapp/homelaunch/static

nginx config (/etc/nginx/sites-enabled/myapp) enthält:

server {
        listen       80;
        server_name     *.myapp.com;
        access_log /home/ubuntu/virtualenv/myapp/error/access.log;
        error_log /home/ubuntu/virtualenv/myapp/error/error.log warn;
        connection_pool_size 2048;

        fastcgi_buffer_size 4K;
        fastcgi_buffers 64 4k;

        root /home/ubuntu/virtualenv/myapp/myapp/homelaunch/;

        location /static/ {
            alias /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/;
        }

        location / {
            proxy_pass http://127.0.0.1:8001;
            proxy_set_header Host $Host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
        }
    }

error.log enthält:

2013/11/24 23:00:16 [error] 18243#0: *277 open() "/home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/img/templated/home/img.png" failed (13: Permission denied), client: xx.xx.xxx.xxx, server: *.myapp.com, request: "GET /static/img/templated/home/img2.png HTTP/1.1", Host: "myapp.com", referrer: "http://myapp.com/"

access.log enthält

xx.xx.xx.xxx - - [24/Nov/2013:23:02:02 +0000] "GET /static/img/templated/base/animg.png HTTP/1.1" 403 141 "http://myapp.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:25.0) Gecko/20100101 Firefox/25.0"
xx.xx.xx.xxx - - [24/Nov/2013:23:02:07 +0000] "-" 400 0 "-" "-"

Ich habe versucht, nur eine .css-Datei in /static/ anzuzeigen, und es wird eine Fehlermeldung wie die folgende ausgegeben:

<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>
16
CodeTalk

Es scheint, dass der Benutzer nginx ausgeführt wird, da ( nginx ?) Keine Berechtigungen zum Lesen der lokalen Datei /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/img/templated/home/img.png vorhanden sind. Sie möchten möglicherweise Dateiberechtigungen sowie Berechtigungen für die Verzeichnisse in der Hierarchie überprüfen.

24
bryn

MacOs El Capitan : Oben in nginx.conf schreiben Sie user username group_name

Mein Benutzername ist Kamil, also schreibe ich:

user Kamil staff;

(Word 'staff' ist in macOS sehr wichtig). Das macht den Trick. Danach müssen Sie keine Berechtigung in Ihrem Projektordner und Ihren Dateien ändern.

19

Versuchen Sie, einen Benutzer oben in der nginx.conf über dem Serverabschnitt anzugeben. 

user www-data;
8
eezis

Die minimale Korrektur, die für mich funktioniert hat, ist:

Sudo chmod -R 664 /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/
Sudo chmod -R a+X /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/

(Übrigens, in meinem Fall heißt der statische Ordner collected_static)

3
o_c

Es scheint, als hätte der Webserver-Benutzer keine Leseberechtigung für die statischen Dateien. Sie können dies auf zwei Arten lösen:

  1. (am einfachsten und sicherer) Führen Sie den nginx als App-Benutzer aus, anstatt den Standard nginx-Benutzer ..__ zu verwenden. Fügen Sie dazu Folgendes hinzu 

nginx.conf

user your_app_user

Ersetzen Sie your_app_user durch den entsprechenden Unix-Benutzernamen für Ihre App.

In diesem Fall verfügt der your_app_user bereits über die erforderlichen Berechtigungen für den statischen Inhalt.

  1. Eine andere Möglichkeit wäre, dem statischen Verzeichnis Berechtigungen für den Webserverbenutzer zu erteilen.
1
user4212639