我正在使用 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 不会旋转静态内容,如果我看到网页的源代码,我可以看到静态内容的所有路径都发生了变化,使用类似 "/米/缓存...”。我想这就是 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,同样的片段是这样的。
<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 以具有该行为。
提前致谢, 埃斯特班·科拉多