【问题标题】:Problems with nginx+gunicorn resolving static contentnginx+gunicorn 解决静态内容的问题
【发布时间】: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&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运行时,同样的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&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 以使其具有这种行为。

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

【问题讨论】:

  • 你看过link吗?和run python manage.py collectstatic
  • 嗨@JamesBirkett 是的,我看过了。无论如何,我能够解决我的问题,问题是负责我行为的压缩器应用程序,我禁用了添加到 settings.py 文件 COMPRESS_ENABLED = False 的压缩。

标签: django nginx askbot


【解决方案1】:

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

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

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

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

   COMPRESS_ENABLED = False

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

BR, 埃斯特班·科拉多

【讨论】:

    猜你喜欢
    • 2021-01-02
    • 1970-01-01
    • 2019-01-29
    • 2019-10-02
    • 2021-05-12
    • 2019-07-12
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多