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

Docker Compose搭配NGINX部署Django构建成功后localhost无法访问问题排查

问题排查及解决方案

  • ALLOWED_HOSTS配置错误
    你当前settings.py中的ALLOWED_HOSTS仅配置了['localhost', '127.0.0.1'],仅允许来自本地的请求访问。Nginx转发请求时携带的Host头为你实际访问的公网IP、域名,Django会直接拦截这类请求返回403错误。
    解决方法:修改ALLOWED_HOSTS配置,加入你实际访问用的IP、域名,临时排查可改为ALLOWED_HOSTS = ['*'],生产环境请替换为实际的服务域名/IP。
  • 生产环境未执行Django初始化命令
    你使用的生产环境入口脚本entrypoint.prod.sh中没有执行数据库迁移、静态资源收集命令,会导致服务启动后数据库表不存在、静态资源无法加载。
    解决方法:在entrypoint.prod.sh的exec "$@"之前添加如下命令:
python manage.py migrate --no-input
python manage.py collectstatic --no-input --clear
  • 依赖缺失
    检查app/requirements.txt中是否添加了gunicorn依赖,生产环境Web服务使用gunicorn启动,若未安装该依赖会导致Web容器启动失败,直接无法访问。
  • 端口冲突
    检查宿主机80端口是否被其他服务(如本地Nginx、Apache等)占用,若端口被占Nginx容器无法正常绑定端口,自然无法对外提供服务。
  • 容器运行状态异常
    执行docker compose -f <你使用的compose配置文件> ps查看Web、Nginx容器的运行状态,若存在重启、退出的情况,执行对应日志命令排查错误:
    • Web服务日志:docker compose -f <配置文件> logs web
    • Nginx服务日志:docker compose -f <配置文件> logs nginx
  • 静态资源权限问题
    若只有动态接口能访问、静态资源全部404,检查Nginx是否有权限读取共享卷中的静态文件,临时排查可在nginx/Dockerfile中加入USER root,确认是权限问题后再调整静态文件所属用户组的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:27:03