【问题标题】:Nginx serve Django static files?Nginx 服务 Django 静态文件?
【发布时间】:2016-04-05 05:26:08
【问题描述】:

我有两个 EC2 实例。

我正在使用 Gunicorn 部署 Django。

另一个用于使用指向 Gunicorn 服务器的 Nginx 服务请求。

现在我通常会运行 collectstatic 并且静态文件的 Nginx 配置 如下:

server {
    listen 80;
    server_name server_domain_or_IP;

    location /static/ {
        # my static files directory
        root /home/user/myproject;
    }

   # other locations here
}

当 Nginx 和 Gunicorn 部署在同一台服务器上时,此配置效果很好。

但在这种情况下,Gunicorn 服务器不同,我不知道如何路由我的静态文件请求。

应该有一些方法可以在 Nginx 服务器本身上收集我的静态文件,或者将我的请求路由到 Gunicorn 服务器。

我可以使用 S3 来托管我的静态文件,但目前这不是一个选项。

【问题讨论】:

  • 您应该真正使用 S3 来提供静态文件。使用 django-storages 将文件上传到存储桶非常容易。您将降低成本,因为只需要 1 个 ec2 实例,并且可以轻松地与 CDN (CloudFront) 耦合

标签: django nginx amazon-ec2 gunicorn static-files


【解决方案1】:

您需要将静态文件保存在运行 Nginx 的同一台服务器上。因此,最好的选择应该是在两台服务器上跟踪您的 Django 项目(也可以在两台服务器上运行 collectstatic,尽管不需要在 Gunicorn 服务器上运行它)。因此,Nginx 将继续在其运行的本地服务器上提供来自 Django 静态文件的静态文件,并且对于其他请求,它会将请求转发到 Gunicorn 服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2018-03-29
    • 2018-02-20
    • 2013-12-08
    相关资源
    最近更新 更多