记录docker容器中nginx配置https

前言

  • 今天突然想把博客再部署一套到自己的服务器,看到自己部署完毕后浏览弹出连接不安全,这哪能忍,速速搞定它!

连接不安全

需要的资源

  • 你得拥有一个域名
  • 一台自己的服务器
  • 服务器安装docker

注册域名证书

  • 可以到各大平台注册,有免费的也有收费的
  • 我是在https://freessl.cn/ 这个网站上注册的证书
  1. 填入你的域名创建证书

    创建SSL证书

  2. 填入你的邮箱,这里我是选择离线生成需要下载一个秘钥管理器,如果不想下载则选择浏览器生成,再次点击创建。

    选择证书类型

  3. 接下来会给你两个值:TXT记录记录值DNS验证

  4. 你需要将这两个值分别填入你的域名解析中:解析

  5. 保存以后点击检测一下,如果提示3个绿色的成功,就可以点击验证。检测

  6. 得到两个文件。

得到证书

将证书上传至服务器

cd 证书所在目录

scp hetonghao.cn_chain.crt {用户名}@{服务器地址}:{目录}

scp hetonghao.cn_key.key {用户名}@{服务器地址}:{目录}

登录服务器创建nginx容器

  • 参考命令:
# 拉取镜像
docker pull nginx
# 创建容器
docker run --name nginx -d -p 80:80 -p 443:443 -v /root/webApp:/usr/share/nginx/html
-v /var/log/nginx:/var/log/nginx -v /etc/nginx/cert:/etc/nginx/cert
-v /etc/localtime:/etc/localtime -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf
nginx:latest
  • 参数解释
# 映射宿主机ssl通道
-p 443:443
# 挂载web页面目录
-v /root/webApp:/usr/share/nginx/html
# 挂载证书目录
-v /etc/nginx/cert:/etc/nginx/cert
# 挂载日志目录
-v /var/log/nginx:/var/log/nginx
# 时间同步
-v /etc/localtime:/etc/localtime
# 挂载配置文件
-v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf

将证书文件移动至挂载的证书目录

-v /etc/nginx/cert:/etc/nginx/cert

也就是/etc/nginx/cert

cd 证书目录
mv hetonghao.cn_chain.crt /etc/nginx/cert
mv hetonghao.cn_key.key /etc/nginx/cert

配置Nginx

三种访问机制

vim /etc/nginx/nginx.conf/default.conf
  • 以下方式选择一种即可(省略不相关配置):

同时支持Http和Https

  • 配置这关键的三行!

配置证书地址

禁用Http

server {
#listen 80;
listen 443 ssl;
server_name localhost;
}

http 自动跳转 https

server{
listen 80;
server_name hetonghao.cn;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/cert/hetonghao.cn_chain.crt;
ssl_certificate_key /etc/nginx/cert/hetonghao.cn_key.key;
}

重新加载Nginx配置文件

# nginx重新加载
docker exec -it nginx service nginx reload
# 如果不生效尝试重启容器
docker restart nginx

搞定!

安全连接

文章作者: 何同昊
文章链接: http://hetonghao.cn/2020/03/记录docker容器中nginx配置ssl/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 何同昊 Blog
支付宝超级火箭🚀
微信超级火箭🚀