You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

DEBUG=False时Django多应用Nginx下App2媒体文件404问题求助

解决App2媒体文件404的问题

从你的错误日志和配置来看,核心问题是App2生成的媒体文件URL没有带上/app2前缀,导致Nginx错误地去App1的media目录查找文件。下面是具体的修复步骤:

1. 修改App2的MEDIA_URL配置

打开App2的settings.py,把MEDIA_URL从:

MEDIA_URL = 'media/'

改成:

MEDIA_URL = '/app2/media/'

这样App2生成的媒体文件URL就会是/app2/media/attach_1/attach.pdf,而不是原来的/media/attach_1/attach.pdf,就能让Nginx匹配到对应App2的location规则。

2. 确认App2的MEDIA_ROOT正确性

确保App2的MEDIA_ROOT确实指向自己的媒体目录,你的当前配置:

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

没问题,只要BASE_DIR是App2项目的根目录(比如/home/user/app2),那么MEDIA_ROOT就是/home/user/app2/media,和Nginx配置的路径完全对应。

3. 修正Nginx的App2代理路径(可选但重要)

你提到App2对应mysite.com/app2,但当前Nginx配置里是location /secondapp/指向App2的sock,这会导致访问/app2/时错误路由到App1。建议把这个location改成:

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

这样访问mysite.com/app2/才会正确路由到App2服务。

4. 重启服务生效

修改完配置后,需要重启相关服务让配置生效:

  • 重启App2的Gunicorn服务(根据你的实际启动方式调整):
sudo systemctl restart app2-gunicorn
  • 重启Nginx服务:
sudo systemctl restart nginx

这样调整后,App2的媒体文件应该就能被Nginx正确定位,不会再出现404错误了。

内容的提问来源于stack exchange,提问作者Margo

火山引擎 最新活动