如何用Nginx将8085端口的Docker容器重定向到HTTPS域名并实现外部访问
配置Nginx反向代理Docker容器到HTTPS域名
前提准备
- 确保已获取目标域名的SSL证书(可通过
certbot生成Let's Encrypt免费证书) - 服务器防火墙已开放80(HTTP)和443(HTTPS)端口
步骤1:创建Nginx站点配置文件
在Nginx的conf.d目录(通常为/etc/nginx/conf.d/)下新建配置文件,比如your-domain.conf,内容如下:
# 强制将HTTP请求重定向到HTTPS server { listen 80; server_name your-domain.com; # 替换为你的实际域名 return 301 https://$server_name$request_uri; } # 处理HTTPS请求,反向代理至Docker容器的8085端口 server { listen 443 ssl; server_name your-domain.com; # 替换为你的实际域名 # 填写SSL证书的实际路径 ssl_certificate /path/to/your/fullchain.pem; ssl_certificate_key /path/to/your/privkey.pem; # 可选的SSL优化配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # 反向代理核心配置 location / { proxy_pass http://localhost:8085; # 指向宿主机的8085端口(容器映射端口) 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; } }
步骤2:验证配置并重启Nginx
执行命令检查配置合法性:
nginx -t
若输出test is successful,则重启Nginx使配置生效:
systemctl restart nginx
关键注意事项
- 确认Docker容器的端口映射正确:容器内部服务需监听容器内端口(如80),通过
docker run -p 8085:容器内部端口映射到宿主机8085端口 - 若容器与Nginx不在同一宿主机,需将
proxy_pass中的localhost替换为容器所在服务器的IP地址 - 若使用
certbot自动生成证书,它会自动配置HTTP到HTTPS的重定向,仅需补充反向代理部分即可
内容的提问来源于stack exchange,提问作者Vadym Nych
相关产品推荐
相关产品推荐

