【问题标题】:Nginx - How to serve static files with upstream modelNginx - 如何使用上游模型提供静态文件
【发布时间】:2016-10-10 18:19:27
【问题描述】:

我已经在 127.0.0.1:8001 的 ubuntu lxc 容器中使用 gunicorn 和 nginx 运行我的 django 应用程序。

这是host中的nginx conf:

upstream django_app  {
      server 10.0.8.100:8001;
}

server {
        listen  80;
        server_name     mysite.com;

        location / {
                proxy_pass      http://django_app;
                proxy_redirect  off;
                proxy_set_header   Host $host;
                proxy_set_header   X-Real-IP $remote_addr;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
              }
      }

这是container中的nginx conf:

server {
    listen 80;

    location / {
         proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
         proxy_set_header Host $http_host;
         proxy_pass http://127.0.0.1:8001;
     }

    location /static {
            alias /opt/static_files/django_app/;
    }

}

此配置有效。我可以看到我的应用程序从浏览器运行,但没有加载静态文件。对于浏览器中的每个静态文件,我都有404 not found

/opt/static_files/django_app/ 路径是使用collectstatic 命令收集的所有静态文件的位置。

我找不到向上游提供静态文件的方法。

谢谢

【问题讨论】:

  • 如果你把静态位置放在第一位,是否有效!
  • @DanielRoseman 不,先生。它没有用。一切看起来都很好。但不知何故,主机无法到达/opt/static_files/django_app/ 路径。在容器机器中。

标签: django nginx


【解决方案1】:

/opt/static_files/ 应该与settings.py django 文件中的STATIC_ROOT 设置相同。

另外,改变:

location /static {
        alias /opt/static_files/django_app/;
}

到:

location /static/ {
        alias /opt/static_files/django_app/;
}

【讨论】:

  • 与 STATIC_ROOT 设置相同。应用程序在没有上游模型的情况下正常工作。问题就在这里(我认为),主机无法访问/opt/static_files/django_app/ 文件夹下的静态文件。它位于容器中。
猜你喜欢
  • 2014-01-12
  • 2022-12-17
  • 2015-10-19
  • 2013-05-08
  • 2017-11-19
  • 1970-01-01
  • 2015-03-18
  • 2013-06-27
  • 2018-10-23
相关资源
最近更新 更多