Docker环境下Nginx server_name指定域名无法访问后端服务
解决步骤
修改宿主机hosts文件
本地测试环境下,需将自定义域名映射到本地IP。找到宿主机的hosts文件:- Windows:
C:\Windows\System32\drivers\etc\hosts - Linux/macOS:
/etc/hosts
添加一行映射规则:
127.0.0.1 my-domain.xyz保存后在终端执行
ping my-domain.xyz,确认域名能解析到127.0.0.1。- Windows:
确保后端服务监听0.0.0.0
检查api后端的启动配置,必须让服务监听0.0.0.0:4000而非127.0.0.1:4000。若仅监听127.0.0.1,Docker容器外部(包括Nginx容器)将无法访问该服务。以Node.js为例,启动代码需调整为:app.listen(4000, '0.0.0.0', () => { console.log('服务运行在0.0.0.0:4000'); });验证Nginx配置并重启服务
- 进入Nginx容器:
docker exec -it nginx sh - 检查配置文件合法性:
输出nginx -ttest is successful则配置正常,否则根据提示修正错误。 - 重启Nginx使配置生效:
nginx -s reload
- 进入Nginx容器:
检查宿主机80端口占用
确认宿主机80端口未被其他服务(如Apache、IIS或其他Nginx实例)占用:- Windows:
netstat -ano | findstr ":80" - Linux/macOS:
lsof -i :80
若有占用,停止对应服务即可(优先保留默认80端口以符合域名访问习惯)。
- Windows:
内容的提问来源于stack exchange,提问作者William Le
相关产品推荐
相关产品推荐

