我遵循了多个指南并阅读了许多关于这个问题的其他答案(例如:here、here、here、here、here等等),但没有一个有用。你知道吗
使用nginx1.15.5、Django 2.2.1、gunicorn 19.9.0和Python 3.6
现在,我的Django管理面板如下所示:
nginx.conf
error_log logs/error.log warn;
events { }
http {
access_log logs/access.log combined;
include default-site.conf;
include myapp.conf;
}
你知道吗myapp.conf文件你知道吗
server {
# http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log
access_log logs/myapp/access.log combined;
server_name myserver.com;
listen 1234;
# ignore favion messages
location = /favicon.ico { access_log off; log_not_found off; }
# path to socket for gunicorn
location / {
proxy_pass http://unix:/usr/local/bin/apps/myapp/myapp.sock;
}
# location for static files to serve; mostly the admin panel CSS files
location /static/ {
root /usr/local/bin/apps/myapp/;
}
}
Gunicorn daemon start命令(在myapp
项目目录中):
gunicorn webapp.wsgi \
--bind "unix:/usr/local/bin/apps/myapp/myapp.sock" \
--config "../server-conf/myserver.com/myapp/gunicorn_config.py" \
--pid "logs/gunicorn.pid" \
--access-logfile "logs/gunicorn.access.log" \
--error-logfile "logs/gunicorn.error.log" \
--log-file "logs/gunicorn.log" \
--name "gunicorn-myapp" \
--daemon
Django settings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
我已经跑了python manage.py collectstatic
。文件已存在,并且具有全局读取权限:
$ ll /usr/local/bin/apps/myapp/static/
total 12K
drwxrwsr-x. 3 myusername myusergroup 4.0K Mar 21 14:57 .
drwxrwsr-x. 10 myusername myusergroup 4.0K Mar 21 17:06 ..
drwxrwsr-x. 6 myusername myusergroup 4.0K Mar 21 14:57 admin
$ ll /usr/local/bin/apps/myapp/static/admin/
total 24K
drwxrwsr-x. 6 myusername myusergroup 4.0K Mar 21 14:57 .
drwxrwsr-x. 3 myusername myusergroup 4.0K Mar 21 14:57 ..
drwxrwsr-x. 3 myusername myusergroup 4.0K Mar 21 14:57 css
drwxrwsr-x. 2 myusername myusergroup 4.0K Mar 21 14:57 fonts
drwxrwsr-x. 3 myusername myusergroup 4.0K Mar 21 14:57 img
drwxrwsr-x. 4 myusername myusergroup 4.0K Mar 21 14:57 js
最让人困惑的是,nginx正在成功地切断CSS文件。当我导航到myserver.com:1234/static/admin/css/base.css
时,我可以在浏览器中看到它们的内容:
在我的nginx日志中,当我尝试访问管理页面时,看到如下消息:
100.100.100.100 - - [21/Mar/2019:18:32:50 -0400] "GET /admin/login/?next=/admin/ HTTP/1.1" 200 1819 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"
当我直接访问CSS文件时:
100.100.100.100 - - [21/Mar/2019:18:32:52 -0400] "GET /static/admin/css/base.css HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"
我不知道为什么它会给出304状态码,但没有错误。我能够访问静态管理CSS文件,因此该文件似乎被正确地提供(?)。除此之外,应用程序的其他部分都正常工作。你知道发生了什么事吗?为什么CSS文件不能在页面中正确呈现?你知道吗
原来我需要在nginx conf中包含
/etc/nginx/mime.types
文件我想这是因为我在一个非标准的目录位置用一个空的
nginx.conf
开始的。你知道吗将这一行添加到我的conf并重新启动服务器几次之后,现在.css文件被正确呈现。你知道吗
作为参考,打开Chrome开发者工具的Network标签并查看页面上css文件的条目有很大帮助,以前它们是以“Content-Type:text/plain”的形式出现的,现在它们是以“Content-Type:text/css”的形式出现的。你知道吗
此外,我尝试在我的应用程序(
myapp.conf
)的配置下完全禁用缓存,如下所示:这似乎有助于将浏览器中的HTTP代码从304变成200。你知道吗
相关问题 更多 >
编程相关推荐