为aws s3静态和媒体文件配置Nginx

时间:2017-06-22 03:58:56

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

我正在使用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

3 个答案:

答案 0 :(得分:3)

对于S3,nginx不负责提供静态和媒体文件,您无需配置任何内容。

答案 1 :(得分:0)

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

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

在您使用s3的视图中,为了提高性能,您可以将s3置于Cloudfront和服务器内容之后。

答案 2 :(得分:-1)

在Nginx中尝试:

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

在Djando settings.py中使用:

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

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

python manange.py collectstatic

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