记一次Docker内Nginx反向代理配置SSL证书无法访问问题

问题描述

最近在给域名配置SSL证书,相关文章请看《给Nginx配置SSL证书实现https安全访问》,但是配置了两天,一直卡在修改配置文件那里,不管怎么配置都只能用http协议访问域名,如果访问https协议就会出现无法访问此网站的错误。

记一次Docker内Nginx反向代理配置SSL证书无法访问问题-Luninousail ' Blog

解决思路

为了解决这个问题,我几乎把网上能搜到的相关配置文件都放上去跑了一遍,但参数就那么几个,原理也并不复杂,无非就是让Nginx监听443端口和80端口,并在443端口配置SSL证书,使用https协议解析域名,在80端口设置域名重定向,将http的访问的请求全部转发到443端口去来实现自动访问https域名的目的。

在再三确认所有的参数和证书地址全部正确,且可以顺利访问到不存在访问权限不够问题后,我把目光转向了docker,今天突然灵感一闪:会不会是docker的端口没有映射到宿主主机呢?

然后我检索了一下相关命令,发现一个查看很好用的查看本地ip地址和端口的命令:

iptables -L -n
记一次Docker内Nginx反向代理配置SSL证书无法访问问题-Luninousail ' Blog

果然443端口不在docker的端口映射里面,知道原因就好解决了,把nginx容器的443端口映射到宿主主机的443端口应该就没问题了。修改docker容器的端口映射可以看我之前写过的文章:《修改Docker容器WordPress的端口映射》

解决结果

还在上班,暂时没有验证想法,等晚上回家试,但感觉八成就是docker的锅了。

更新:

确认了,在Docker内的Nginx容器添加了443的端口映射,重启docker和容器,成功访问https协议的域名了,这两天经常搞到半夜两点,反反复复修改配置文件的生活总算结束了,收获是对docker的命令和Nginx配置文件更熟了,剩下只要依次配置好反向代理的其他二级域名,顺便做个http到https的重定向就可以了。

记一次Docker内Nginx反向代理配置SSL证书无法访问问题-Luninousail ' Blog

本文系作者 @ 原创发布在 Luninousail ' Blog。未经许可,禁止转载。

喜欢()
评论 (0)
183 文章
2 评论
14 喜欢
Top