nginx將.js .css處理為text/plain
1.問題
在使用Django+uwsgi+nginx部署過程中會遇到如下問題诈胜,使用Django處理靜態(tài)文件,運(yùn)行
python manage.py runserver
可以加載.js顾瞻、.css文件。部署時將DEBUG = True
改為DEBUG = False
以后Django不再處理靜態(tài)文件此時需要以下命令
python manage.py collectstatic
在settings.py
中設(shè)置STATIC_ROOT
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
將所有的靜態(tài)文件收集到collected_static
文件夾下
在nginx配置中添加
location /static {
# alias /path/to/your/mysite/static; # your Django project's static files - amend as required
alias /mysite/collected_static;
expires 1d;
}
ps:alias與root的區(qū)別:
alias對應(yīng)路徑/mysite/collected_static
root對應(yīng)路徑/mysite/colletcted_static/static
此時通過瀏覽器可以發(fā)現(xiàn)可以加載網(wǎng)頁德绿,但是樣式全沒了荷荤,只有文字
通過chrome的調(diào)試功能可以發(fā)現(xiàn),瀏覽器將.css與.js文件處理為text/plain了
2.解決方案
在nginx的配置文件中添加以下命令
include /etc/nginx/mine.types
location ~ \.js {
add_header Content-Type application/x-javascript;
}
location ~ \.css {
add_header Content-Type text/css;
}
同時清空瀏覽器緩存移稳,建議在chrome調(diào)試的時候勾選Disable cache