我遇到了一个非常奇怪的问题,我无法找到理由。我有一个django应用程序,uWSGI作为我的应用程序服务器,Nginx作为我们的反向代理。我在Django中对静态URL的初始设置如下:
PROJECT_DIR = "/home/ubuntu/src/myapp"
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(PROJECT_DIR, 'staticfiles')
STATIC_URL = '/staticfiles/'
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR, 'static'),
)
以及nginx conf中的内容如下:
server {
listen 80;
server_name stg1.myapp.com
client_max_body_size 5G; # adjust to taste
access_log /var/log/nginx/myapp-access.log combined;
error_log /var/log/nginx/myapp-error.log;
location /media {
alias /home/ubuntu/src/myapp/media/; # your Django project's media files - amend as required
}
location /static {
alias /home/ubuntu/src/myapp/staticfiles/;
}
location / {
uwsgi_pass django;
uwsgi_read_timeout 600s;
uwsgi_buffering off;
uwsgi_send_timeout 600s;
proxy_read_timeout 600s;
include /home/ubuntu/src/myapp/uwsgi_params;
}
}
现在,当我尝试访问服务器时,我收到了静态文件的错误:
2016/12/13 20:33:03 [error] 30533#0: *194 open() "/home/ubuntu/src/myapp/staticfiles/files/css/base.css" failed (2: No such file or directory), client: 172.31.4.166, server: stg.myapp.com, request: "GET /staticfiles/css/base.css HTTP/1.1", host: "stg.myapp.com", referrer: "http://stg.myapp.com/profile/user1"
Collectstatic
复制了给定STATIC_ROOT
位置的所有文件。但实际搜索的路径是 - STATIC_ROOT/files
。
当我将STATIC_ROOT
更改为
STATIC_ROOT = os.path.join(PROJECT_DIR, 'staticfiles/files')
它奏效了。我仍然不知道为什么要查找目录staticfiles/files
,而不仅仅是nginx conf中给出的staticfiles
目录。我应该在哪里寻找可能的原因?
编辑 - 只要有更改,我就重新启动了nginx服务。那里没有问题。
答案 0 :(得分:1)
我找到了原因。
STATIC_URL = '/staticfiles/'
正在制造问题。它必须是
STATIC_URL ='/ static /'.
较早的一个会在请求路径中附加files
,导致我的问题。
答案 1 :(得分:0)
在首次设置中找不到目录文件。 [我还没有权利发表评论]。
<小时/> 设置对我来说很好,也许你只是在修改配置文件时忘记重启Nginx。上的链接