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 测试前端页面和接口代理是否正常。

相关推荐
行者-全栈开发1 天前
【码动四季·秋】把 Spring Boot 的 Tomcat 换成 Undertow:一次容器替换的三处暗坑
spring boot·tomcat·容器化·依赖管理·undertow
宁波阿成2 天前
CentOS 7 环境下 Tomcat 8.5 升级至 9.0.123 操作总结
linux·centos·tomcat
行者-全栈开发3 天前
【Java中间件】CVE-2026-34486:Tomcat EncryptInterceptor 补丁绕过修复指南
tomcat·cve-2026-34486·encryptintercep·会话复制·集群安全·补丁绕过·cwe-311
景熙55234 天前
2.什么是业务后台系统
java·spring·tomcat·mybatis·jdbc
无巧不成书02184 天前
Tomcat部署JSP文件完整指南:手动部署+IDEA工程化实现 附404访问错误全排查
java·ide·windows·tomcat·intellij-idea·js
weixin_BYSJ19875 天前
电竞先锋网站---附源码02032
java·vue.js·spring boot·python·django·tomcat·php
2301_32241428046 天前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
BioRunYiXue7 天前
使用docker分析高通量测序数据
java·数据库·人工智能·spring cloud·docker·tomcat·html
paopaokaka_luck7 天前
美食推荐系统(协同过滤算法推荐、AI助手、HanLP中文分词、 ECharts可视化分析、菜谱学习与话题交流)
java·spring boot·mysql·tomcat·echarts
鬼手点金8 天前
单轮对话:最简单的 API 调用
java·服务器·前端·javascript·react.js·servlet·tomcat