【问题标题】:Configure Nginx for aws s3 static and media files为 aws s3 静态和媒体文件配置 Nginx
【发布时间】:2017-11-25 04:06:46
【问题描述】:

我将 aws s3 用于我的 django 应用程序的静态和媒体文件。 Gunicorn 和 Nginx 被用于应用程序和代理服务器。

Nginx 设置:

server {
    listen 80;
    server_name sitename.com;

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/SiteNameDjango/myproject/myproject.sock;
    }
}

由于我将 aws s3 用于我的静态和媒体文件,我应该如何为我的静态位置配置 Nginx?还是不需要配置静态和媒体文件?

如果有帮助,这里是 aws s3 的 Django 项目设置:

STATICFILES_LOCATION = 'static'
MEDIAFILES_LOCATION = 'media'
STATICFILES_STORAGE = 'myproject.custom_storages.StaticStorage'
DEFAULT_FILE_STORAGE = 'myproject.custom_storages.MediaStorage'
AWS_STORAGE_BUCKET_NAME = "django-bucket"
AWS_S3_CUSTOM_DOMAIN = AWS_STORAGE_BUCKET_NAME + ".s3.amazonaws.com"
STATIC_URL = "https://" + AWS_STORAGE_BUCKET_NAME + ".s3.amazonaws.com/"
MEDIA_URL = STATIC_URL + "media/"
ADMIN_MEDIA_PREFIX = STATIC_URL + "admin/"

例如网址:

https://django-bucket.s3.amazonaws.com/media/user_image/1497598249_49.jpeg

【问题讨论】:

    标签: django amazon-web-services nginx amazon-s3


    【解决方案1】:

    在 Nginx 中尝试:

    location /static {
           alias /path/to/your/static;
        }
    

    在 Django settings.py 中使用:

    STATIC_ROOT = '/path/to/your/static'
    STATIC_URL = '/static/'
    

    之后你需要在文件夹中收集静态数据,运行以下命令:

    python manange.py collectstatic
    

    Django 会将所有静态文件保存在指定的路径中,现在 Nginx 将加载没有 URL 的静态文件

    【讨论】:

      【解决方案2】:

      如果您使用应用服务器来提供静态文件,那么您需要按照 mattia 提到的方式配置 nginx。

      但是,如果您使用的是 s3 路径,则实际上并不需要相同的东西。根据您在运行 collectstatic 时的配置,它应该会自动在 s3 上同步您的文件。

      在您使用 s3 的视图中,为了提高性能,您可以将 s3 放在 Cloudfront 后面,并从那里放置服务器内容。

      【讨论】:

      • 是的。使用云端!不只是s3,否则会很慢。
      【解决方案3】:

      在 S3 的情况下,nginx 不负责提供静态和媒体文件,您无需进行任何配置。

      【讨论】:

        猜你喜欢
        • 2020-11-15
        • 2017-10-15
        • 2020-04-22
        • 2012-10-29
        • 1970-01-01
        • 2018-02-20
        • 1970-01-01
        • 2017-05-02
        • 2018-10-31
        相关资源
        最近更新 更多