我遇到了非常奇怪的问题,我找不到原因。我有一个与uWSGI作为我的应用程序服务器和Nginx作为我们的反向代理的django应用程序。我对在Django的静态URL初始设置情况如下: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服务,只要在那里做了改变。所以没有问题。
我曾尝试更改nginx conf许多次。所以没有配置重新加载的问题。此外,我从来没有将静态路径改为'actual_path/files'。 –
@Nihal Sharma如果你想访问'“/home/ubuntu/src/myapp/staticfiles/files/css/base.css”,你需要查看STATIC_ROOT目录,找到是否有文件(/ files/css/base.css)退出。 – shady
@ Nihal Sharma它与STATIC_URL无关,我在本地环境中获得了相同的设置,其中STATIC_URL ='/ staticfiles /'。仍然Nginx可以找到由STATIC_ROOT指定的文件。 – shady