使用docker nginx反向代理其它容器服务为https
参考文章如下
https://www.exception.site/docker/how-to-config-ssl-with-docker-nginx
其中需要注意:
1、docker中的nginx只能够监听和宿主机进行过映射的端口
例如使用如下命令去启动容器
docker run –name nginx -p 8086:80 -p 8443:443 -v /volume1/dockerApp/nginx/conf.d:/etc/nginx/conf.d -v /volume1/dockerApp/nginx/logs:/var/log/nginx -v /volume1/dockerApp/nginx/cert:/etc/nginx/cert -v /volume1/dockerApp/nginx/nginx.conf:/etc/nginx/nginx.conf -d nginx:latest
注意到 容器的端口分别为80和443。映射到主机的端口分别为8086和8443
那么,在配置nginx的listen端口的时候,只能够监听到80和443端口。
应该如下配置
server {
listen 443 ssl;
server_name blog.lfchen.fun; #云盘服务
root html;
index index.html index.htm;
ssl_certificate /etc/nginx/cert/xxxx.pem;
ssl_certificate_key /etc/nginx/cert/xxx.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM- SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
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_pass http://docker0ip:宿主机port;
}
}
其中 listen 443 是代表监听容器中的443端口。那么当访问宿主机的8443端口时,容器内的443端口就能被nginx监听到
docker0ip代表宿主机的docker0地址。通过ifconfig命令查询,如下图

宿主机port 则代表容器其他服务映射到宿主机上的端口。例如当前这个nginx的宿主机port就是 8086和8443