0

我正在使用 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&amp;subset=latin-ext" rel="stylesheet" type="text/css" /> <link href="//fonts.googleapis.com/css?family=Open+Sans+Condensed:700&amp;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&amp;subset=latin-ext" rel="stylesheet" type="text/css" /> <link href="//fonts.googleapis.com/css?family=Open+Sans+Condensed:700&amp;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 以具有该行为。

提前致谢, 埃斯特班·科拉多

4

1 回答 1

0

好的,我能够解决我的问题,

它是由 settings.py 文件中包含的压缩器应用程序引起的。

INSTALLED_APPS = (
...
    'compressor'
...
)

我正在部署的 django 应用程序需要该应用程序,所以我所做的是禁用添加到同一文件的压缩。

   COMPRESS_ENABLED = False

现在,我没有看到我在问题中描述的行为,所有静态文件都添加到了 URL 中的 CACHE 文件夹中。

BR,埃斯特万·科拉多

于 2019-10-04T07:25:11.707 回答