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>
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.
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.
Versuchen Sie, einen Benutzer oben in der nginx.conf über dem Serverabschnitt anzugeben.
user www-data;
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
)
Es scheint, als hätte der Webserver-Benutzer keine Leseberechtigung für die statischen Dateien. Sie können dies auf zwei Arten lösen:
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.