首页 > 解决方案 > Django + Nginx 无法提供媒体文件

问题描述

我有两台服务器:第一台用于 Nginx,第二台用于 Django + 媒体文件。

Nginx server IP: xxx.xx.xx.1
Django + media files server IP: xxx.xx.xx.2

在 Django 的settings.py文件中,我的媒体路径配置:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

MEDIA_URL = "/media/"

在第一台服务器中,我的 Nginx 配置:

server {
        listen 80;
        server_name example.com;

        location /media/ {
                proxy_pass http://xxx.xx.xx.2/;
        }

        location / {
                include proxy_params;
                proxy_pass http://xxx.xx.xx.2:8000/;
        }
}

在放置媒体文件的第二台服务器中,我的 Nginx 配置:

server {
        listen 80;
        server_name xxx.xx.xx.2;

        location /media/ {
                alias /home/sadm/Desktop/{project_name}/media;
        }

但是,在尝试访问时example.com/media/images/my_image.jpg,我收到404错误消息。

任何帮助是极大的赞赏!提前致谢!

标签: pythondjangonginx

解决方案


这可能是一分钟,但我认为您不应该/media在别名的末尾添加。尝试这个:

server {
        listen 80;
        server_name xxx.xx.xx.2;

        location /media/ {
                root /home/sadm/Desktop/{project_name};
        }
}

推荐阅读