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

Kak*_*kar 6 django nginx amazon-s3 amazon-web-services

我将 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

由于我将 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/"
Run Code Online (Sandbox Code Playgroud)

例如网址:

https://django-bucket.s3.amazonaws.com/media/user_image/1497598249_49.jpeg
Run Code Online (Sandbox Code Playgroud)

Zad*_*org 7

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


Mat*_*tia -1

在 Nginx 中尝试:

location /static {
       alias /path/to/your/static;
    }
Run Code Online (Sandbox Code Playgroud)

在 Django settings.py 中使用:

STATIC_ROOT = '/path/to/your/static'
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)

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

python manange.py collectstatic
Run Code Online (Sandbox Code Playgroud)

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