如何通过宿主机非容器化Nginx代理将子域名绑定到Docker容器
Nginx转发子域名到Docker容器配置方案
1. 配置Docker容器端口映射
- 启动容器时将内部80端口映射到宿主机本地环回地址的空闲端口(例如8080,避免直接对公网暴露容器端口),执行命令:
docker run -d -p 127.0.0.1:8080:80 <你的容器镜像名称> - 如果容器已经在运行,可以先停止删除原有容器后重新执行上述命令,或者修改Docker端口映射规则,确保宿主机127.0.0.1的8080端口可正常访问容器内的web服务。
2. 新增Nginx站点配置
- 进入Nginx配置目录,主流发行版默认路径为
/etc/nginx/conf.d/或/etc/nginx/sites-available/,新建配置文件i.example.com.conf - 写入以下反向代理配置:
server { listen 80; server_name i.example.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
上述配置中proxy_pass的端口要和你映射的Docker宿主机端口保持一致。
3. 验证配置并生效
- 执行命令检查Nginx配置语法是否正确:
nginx -t - 提示
syntax is ok、test is successful后,执行重载命令让配置生效:systemctl reload nginx
可选:配置HTTPS访问
如果需要开启HTTPS,可以使用SSL证书工具申请i.example.com的证书后,修改上述配置监听443端口,补充SSL证书相关配置即可。
内容的提问来源于stack exchange,提问作者user3392493
相关产品推荐
相关产品推荐

