docker run 命令中添加 --add-host 参数

问题出在你的 Nginx 配置文件(/etc/nginx/conf.d/default.conf)第 19 行。你使用了 host.docker.internal 这个域名来指向后端服务,但在 Linux 服务器的原生 Docker 环境中,这个域名默认是不存在的,导致 Nginx 启动时无法解析地址而直接崩溃。

解决方案

你有两种方法可以修复这个问题,推荐使用方法一:

方法一:修改启动命令(最简单)

docker run 命令中添加 --add-host 参数,手动告诉容器 host.docker.internal 对应的 IP 是宿主机网关。

请执行以下命令重启容器:

复制代码
# 1. 先删除报错的旧容器
docker rm -f nginx

# 2. 使用新命令启动(注意增加了 --add-host 参数)
docker run -d --name nginx -p 80:80 \
  --add-host=host.docker.internal:host-gateway \
  -v /etc/nginx/dist:/usr/share/nginx/html \
  -v /etc/nginx/conf.d:/etc/nginx/conf.d \
  nginx
  • 原理: host-gateway 会自动解析为宿主机的内部 IP(通常是 172.17.0.1),这样容器就能通过这个域名找到宿主机上的 Java 后端了。
方法二:修改 Nginx 配置文件

如果你不想改启动命令,可以直接修改服务器上的配置文件 /etc/nginx/conf.d/default.conf

  1. 打开文件:vim /etc/nginx/conf.d/default.conf
  2. 找到第 19 行,将 proxy_pass http://host.docker.internal:端口号; 中的 host.docker.internal 替换为 宿主机的真实局域网 IP (例如 192.168.x.x)或者 Docker 网关 IP (通常是 172.17.0.1)。
  3. 保存后重启容器:docker restart nginx

为什么会出现这个问题?

  • Windows/Mac 用户: Docker Desktop 会自动配置 host.docker.internal,所以很多教程里都这么写。
  • Linux 服务器用户: 原生的 Docker Engine 不会自动配置这个 DNS 记录。Nginx 在启动阶段会严格检查所有 upstream 域名的有效性,一旦解析失败就会拒绝启动(这就是你看到的 [emerg] 错误)。

验证是否成功

执行完上述操作后,运行 docker ps。如果看到 nginx 容器的状态是 Up ... 而不是 Exited,就说明启动成功了。此时你可以访问服务器 IP 测试前端页面和接口代理是否正常。

相关推荐
vx_BS8133018 小时前
【项目编号:project51629】Spring Boot 乡村自来水缴费系统:把抄表、水费生成与在线缴费做成一条数字化闭环
java·spring boot·eclipse·tomcat·maven
vx_BS813302 天前
【项目编号:project51381】Spring Boot 婚纱摄影管理系统:套餐预约、在线咨询、支付与客片展示的一站式业务实现
java·spring boot·eclipse·tomcat·mybatis
码上上班3 天前
tomcat 知识点总结
运维·tomcat
金玉满堂@bj4 天前
多环境部署方案(开发、测试、生产,搭配Tomcat\+WAR包)
java·tomcat·maven
vx_BS813305 天前
【项目编号:project49759】Spring Boot 宠物综合服务平台:商城、预约、咨询、活动与健康档案的一体化实现
java·spring boot·eclipse·tomcat·intellij-idea
ly76895 天前
Spring Boot 3.2 虚拟线程在 Web 层与 JDBC 池的实践边界
前端·spring boot·后端·tomcat·jdbc·虚拟线程
梨涡泥窝5 天前
基于SSM的校园二手交易平台的设计与实现
java·tomcat
无巧不成书02188 天前
Apache Tomcat 9 下载全指南(Windows,Linux,macOS):版本选型、国内镜像、SHA-512 与 PGP 完整性校验
windows·tomcat·apache
Dream-Y.ocean8 天前
鸿蒙平台 Apache Tomcat 管理控制台适配实战:基于 Electron 壳方案的真实 HTTP 服务器实现
tomcat·apache·harmonyos
无巧不成书02188 天前
Tomcat 下载后使用全指南:解压、环境配置、启动验证与常见问题排查
java·tomcat