Sim*_*ran 6 django nginx django-media
我正在使用 nginx、gunicorn、postgresql 在生产模式(debug=false)下测试我的 django 应用程序。
虽然我能够渲染静态文件,但无法访问存储在“media”文件夹中的文件。
在我的 settings.py 中,以下是设置的变量:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# also tried another combination: MEDIA_ROOT = 'media'
Run Code Online (Sandbox Code Playgroud)
同样在 urls.py 中 MEDIA_ROOT 设置如下:
urlpatterns = [
path('admin/', admin.site.urls),
path('venter/', include('appname.urls')),
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
在我的 /etc/nginx/sites-available/ 文件中,我有以下设置:
server {
listen 80;
server_name website.com www.website.com ;
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
root /home/a/btawebsite;
}
location /media/ {
root /home/a/btawebsite;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/a/myproject.sock;
}
}
Run Code Online (Sandbox Code Playgroud)
然而,在渲染存储在我的 django 数据库中的 xlsx 文件时,如下所示,它会抛出“未找到”错误。
{{file.output_file.url}}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了渲染媒体文件所需的所有配置组合,但无法实现结果。谢谢。
更新:在 settings.py 中进行以下更改
MEDIA_URL = '/'
MEDIA_ROOT = 'media'
Run Code Online (Sandbox Code Playgroud)
Nij*_*jo 6
如果 django 设置中的所有内容都已正确配置,您只需在 nginx conf 中添加以下内容:
location /media {
alias /home/user/django_app/media; #(locaion of your media folder)
}
Run Code Online (Sandbox Code Playgroud)
首先,+static()从 urls.py 中删除 。这不适用于生产,仅适用于开发。
在您的 nginx 配置中,location = /media/仅适用于精确匹配,不适用于以/media/. 去除=。
| 归档时间: |
|
| 查看次数: |
3424 次 |
| 最近记录: |