我遇到了非常奇怪的問題,我找不到原因。我有一個與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