Django在错误的目录中查找带有DEBUG = False和Nginx的媒体文件

问题描述 投票:0回答:1

我的2个Django应用程序在mysite.commysite.com/app2上与Nginx和Gunicorn一起运行。

App1的媒体文件运行正常。对于app2DEBUG = False的尝试下载媒体文件时,我得到404,尽管它为文件创建的URL是正确的(与服务器上的目录匹配) 。

来自nginx错误日志,我发现它可能正在app1的媒体目录中寻找它。

如何使app2在正确的目录中查找媒体?

Nginx日志错误

* 2020/06/09 13:24:51 [错误] 9378#9378:1 open()“ /home/user/app1/media/attach_1/attach.pdf”失败(2:无此类文件或目录),客户端:134.94.7.210,服务器:mysite.com,请求:“ GET /media/attach_1/attach.pdf HTTP / 1.1”,主机:“ mysite.com”,引荐来源网址:“ mysite.com/app2/”

Nginx conf

 server {
            listen 80;
            server_name server_domain;
            location = /favicon.ico { access_log off; log_not_found off; }

            location = /static/ {
                    root /home/user/app1;
            }
            location = /app2/static/ {
                root /home/user/app2;
            }

            location = /media/ {
                root /home/user/app1;
             }
            location = /app2/media/ {
                root /home/user/app2;
            }

            location / {
                include proxy_params;
                proxy_pass http://unix:/run/app1.sock;
            }
            location /secondapp/ {
                include proxy_params;
                proxy_pass http://unix:/run/app2.sock:/;
            }
        }

app2.settings

STATIC_URL = '/static/'
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = 'media/'

我也有urlpatterns = [...] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

django nginx gunicorn
1个回答
0
投票

对于app2,您是否应该不更改媒体和静态URL以指向服务器上app2的URL?

© www.soinside.com 2019 - 2024. All rights reserved.