【发布时间】:2019-10-03 15:33:02
【问题描述】:
我正在使用 django 应用程序(askbot 开源项目)、gunicorn 和 nginx 设置环境。在不同的 docker 容器中使用 nginx 和 gunicorn。
这是我的 nginx 配置。
server {
listen 80;
location /static {
alias /askbot/static;
}
location /m {
alias /askbot/static;
}
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://askbot:8080/;
}
}
如果我在调试模式下运行django应用程序,一切正常,我可以通过nginx,我看到nginx如何只为动态内容调用gunicorn,而静态内容在本地解析。
但是,当我使用 debug false 运行 django 应用程序时,nginx 不会旋转静态内容,如果我查看网页的源代码,我可以看到静态内容的所有路径都已更改,使用 somethign像“/m/CACHE ...”。我想这就是为什么 nginx 不能再解析静态内容的原因了。
例如,当使用调试模式等于true时,这是html源代码的一个片段。
<link rel="stylesheet" href="/m/CACHE/css/9275d0e5b87f.css" type="text/css" /> <link href="//fonts.googleapis.com/css?family=Open+Sans+Condensed:700&subset=latin-ext" rel="stylesheet" type="text/css" /> <link href="//fonts.googleapis.com/css?family=Open+Sans+Condensed:700&subset=cyrillic-ext" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="/m/default/media/jslib/modernizr.custom.js?v=1"></script> <script type="text/javascript">
而当debug等于false运行时,同样的fragment就像。
<link href="/m/default/media/style/style.css?v=1" rel="stylesheet" type="text/css" /> <link href="/m/default/media/fa-4.3.0/css/font-awesome.css?v=1" rel="stylesheet" type="text/css" /> <link href="/m/default/media/bootstrap/css/bootstrap.css?v=1" rel="stylesheet" type="text/css" /> <link href="//fonts.googleapis.com/css?family=Open+Sans+Condensed:700&subset=latin-ext" rel="stylesheet" type="text/css" /> <link href="//fonts.googleapis.com/css?family=Open+Sans+Condensed:700&subset=cyrillic-ext" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="/m/default/media/jslib/modernizr.custom.js?v=1"></script> <script type="text/javascript">
我已经解决这个问题两天了,谁能向我解释为什么会发生这种情况以及如何解决?以不同的方式配置 nginx,或者禁用 django 以使其具有这种行为。
提前致谢, 埃斯特万·科拉多
【问题讨论】:
-
你看过link吗?和
run python manage.py collectstatic -
嗨@JamesBirkett 是的,我看过了。无论如何,我能够解决我的问题,问题是负责我行为的压缩器应用程序,我禁用了添加到 settings.py 文件 COMPRESS_ENABLED = False 的压缩。