我正在使用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
答案 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的静态文件