You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Elastic Beanstalk Docker环境中配置Django静态文件服务

解决Elastic Beanstalk Docker环境中Django静态文件404的问题

我来帮你搞定这个静态文件404的问题,核心思路就是让EB主机上的Nginx直接访问容器挂载出来的静态文件目录,完全避开让gunicorn处理静态请求的坑。下面是一步步的具体操作:

1. 确保Django正确收集静态文件

首先得保证你的Django项目能把所有分散的静态文件收拢到容器内的统一目录:

  • 在settings.py里确认静态文件相关配置正确:
    STATIC_ROOT = '/static'  # 容器内的目录,专门存放收集后的静态文件
    STATIC_URL = '/static/'
    
  • 在Dockerfile中添加收集静态文件的命令(必须放在安装依赖之后,不然Django还没装没法执行):
    RUN pip install -r requirements.txt
    # 自动收集所有静态文件到STATIC_ROOT指定的目录
    RUN python manage.py collectstatic --noinput
    

2. 配置Dockerrun.aws.json挂载静态目录到EB主机

EB的Nginx运行在主机层面,所以需要把容器内的静态文件目录挂载到主机的可访问路径。修改你的Dockerrun.aws.json,添加Volumes配置:

{
  "AWSEBDockerrunVersion": "1",
  "Ports": [
    {
      "ContainerPort": "8002",
      "HostPort": "8000"
    }
  ],
  "Volumes": [
    {
      "HostDirectory": "/var/app/current/static",
      "ContainerDirectory": "/static"
    }
  ]
}

这个配置会在容器启动时,把容器内的/static目录(也就是你收集静态文件的目录)挂载到EB主机的/var/app/current/static目录下,这样Nginx就能直接读取到这些静态文件了。

3. 配置EB的Nginx规则来提供静态文件

接下来要让Nginx知道当请求/static/路径时,去主机的挂载目录找文件。我们需要通过.ebextensions来添加自定义Nginx配置:

  • 在项目根目录创建.ebextensions文件夹
  • 在里面创建00_static_files.config文件,内容如下:
files:
  "/etc/nginx/conf.d/static.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      location /static/ {
        alias /var/app/current/static/;
        expires 30d;  # 设置静态文件缓存,提升访问性能
        add_header Cache-Control "public, max-age=2592000";
        access_log off;  # 关闭静态文件的访问日志,减少日志量
      }

这个配置会在EB主机上生成一个Nginx的额外配置文件,告诉Nginx处理/static/开头的请求时,直接返回/var/app/current/static/目录下的文件,同时设置了30天的缓存策略,优化用户访问体验。

4. 重新部署并验证

把所有修改后的文件(Dockerfile、Dockerrun.aws.json、.ebextensions目录)都提交到版本控制,然后重新部署到Elastic Beanstalk。部署完成后:

  • 可以通过EB控制台的实例连接功能,ssh到主机上检查/var/app/current/static目录是否有静态文件
  • 访问你的EB域名下的静态文件路径(比如http://your-eb-domain/static/css/base.css),确认不再返回404
  • 如果还是有问题,可以查看Nginx的日志(/var/log/nginx/access.log和error.log)来排查具体原因

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:58:55