我有一个django应用程序,python 2.7与gunicorn和nginx。
Nginx正在抛出一个403 Forbidden Error
,如果我试图在我的static
文件夹@中查看任何东西:
/home/ubuntu/virtualenv/myapp/myapp/homelaunch/static
nginx config ( /etc/nginx/sites-enabled/myapp
)包含:
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包含:
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包含
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 "-" "-"
我试着在/static/
查看一个.css
文件,并在源代码中抛出这样的错误:
<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>
看起来用户nginx正在运行( nginx ?)缺少读取本地文件/home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/img/templated/home/img.png
。 您可能想要检查文件权限以及层次结构中目录的权限。
2016:在nginx.conf的顶部写入user username group_name
我有macOs埃尔卡皮坦,我的用户名是卡米尔,所以我写道:
user Kamil staff;
(在MacOS中,“员工”一词非常重要)。 这是做的伎俩。 之后,您不需要更改项目文件夹和文件中的任何权限。
尝试在服务器部分上方的nginx.conf顶部指定一个用户。
user www-data;
为我工作的最小修复程序是:
sudo chmod -R 664 /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/ sudo chmod -R a+X /home/ubuntu/virtualenv/myapp/myapp/homelaunch/static/
(顺便说一句,在我的情况下,静态文件夹被称为collected_static
)
看来Web服务器用户没有对静态文件的读取权限。 你可以用两种方法解决这个问题:
nginx
用户。 为此,请在下面添加 nginx.conf
user your_app_user
将your_app_user
替换为适合您的应用的unix用户名。
在这种情况下,your_app_user已经拥有对静态内容的必要权限。
在这么多文章后几个小时,我碰到: http : //nicholasorr.com/blog/2008/07/22/nginx-engine-x-what-a-pain-in-the-bum/
对chmod整个django应用程序目录有一个评论,所以我做了:
sudo chmod -R myapp
这固定它。 难以置信的!
感谢那些提供解决方案来解决这个问题。