内容简介:虽然说是从0开始,但是你还是得准备一些东西:
前言
- emmm~,今天是9102年儿童节,都9102年了,你的网站还是万年HTTP吗,Chrome已经看你不爽很久了,得益于Let's Encrypt,现在申请TLS证书变得异常简单。
- 本文将分享我是如何开启整站HTTPS和QUIC,网上关于QUIC的介绍文章挺多的,既然你在看这篇文章,相信是对QUIC有一定了解的,本文不在做重复介绍相关概念。
- 网上的很多文章教程略微复杂,本文将带领你从0开始部署,大学生都学得会。
- 本文使用的浏览器是Chrome73,协议是QUIC43。最终效果如下。
前置条件
虽然说是从0开始,但是你还是得准备一些东西:
Docker&Docker-compose
DNS解析
- 如果你知道如何配置DNS,可以跳过
- 主机记录@,记录类型A,记录值你的服务器公网IP地址。
- 主机记录*,记录类型CNAME,记录值你域名(末尾有个.)
- 大概就是下面这个样子。
注意
- 这里我默认你已经安装好了
Docker
以及Docker-compose
,即将会使用到该工具,如果没有正确安装,请看安装这两个 工具 的教程。 CentOS7 安装 Docker &Docker-compose - 后续操作我是在CentOS7下面进行的,请确保你的账号有足够的权限(root)
准备配置文件
- mkdir -p /containers/caddy
- cd /containers/caddy
- vi docker-compose.yml
version: '2' services: caddy-server: image: abiosoft/caddy:latest container_name: caddy-server ports: - "443:443/udp" - "443:443" - "80:80" volumes: - "/containers/caddy/Caddyfile:/etc/Caddyfile" - "/containers/caddy/.caddy:/root/.caddy" - "/containers/caddy/log:/root/log" - "/containers/caddy/www:/www" restart: always entrypoint : "tail -f /dev/null"
-
保存退出
-
vi ./www/index.html
<h1>Hello World</h1>
-
保存退出
-
vi Caddyfile
# 请替换为自己的域名 https://www.1996.live { gzip # 请替换为自己的邮箱 tls imqksl@gmail.com root /www log /root/log/log.log errors /root/log/error.log }
- 保存退出
- docker-compose up -d
- docker ps
如果没有意外,你这个时候应该是跟我的截图类似,注意 STATUS Up * Seconds应该就是正常启动了。
- docker exec -i -t caddy-server sh
执行这条命令后,我们会进入该容器内容,可以通过命令行左侧路径分辨出来。
- caddy -quic -conf /etc/Caddyfile
执行这条命令后,Caddy会询问是否同意相关协议。怎么选,同学你自己心里有数吧。
然后Caddy会自动去申请HTTPS证书,免费的,一般两分钟以内完成。 这里可能会让你再输入一次邮箱地址。完成后,大概就是这个样子。
通过域名访问即可,注意使用https://
请关闭科学上网,代理工具等,因为他可能会将UDP数据代理至TCP,而QUIC基于UDP,就会导致QUIC连接建立失败,此时连接使用HTTP/2 以及TLS1.3证书。
请确保服务器防火墙允许80,443端口流量通过
善后处理
- ctrl+c
- exit
- docker-compose down
- vi docker-compose.yml
version: '2' services: caddy-server: image: abiosoft/caddy:latest container_name: caddy-server ports: - "443:443/udp" - "443:443" - "80:80" volumes: - "/containers/caddy/Caddyfile:/etc/Caddyfile" - "/containers/caddy/.caddy:/root/.caddy" - "/containers/caddy/log:/root/log" - "/containers/caddy/www:/www" restart: always entrypoint : "caddy -quic -conf /etc/Caddyfile" # 整个文件只修改这里
这个文件只修改了最后一行的内容
- docker-compose up -d
- systemctl enable docker
善后的步骤挺多余的,由于初次运行Caddy需要同意用户协议,作者不知道该怎么让docker-compose的容器接受键盘输入,出此下策,希望有懂的朋友指点一下。
自此,如果没有意外的话,以后该服务器都会自动运行。
静态文件根据自己的需求替换即可
Caddy也有反向代理等功能,可以轻松实现整站QUIC,后面会讲到。
如果你已经完全按照本文操作,但是依然不能建立QUIC连接,一个可能的原因是ISP阻断了UDP数据,可以让其它地区的朋友帮忙测试一下。
强制HTTPS
完成前面的操作后,虽然我们可以通过输入 https://yourdomain
实现HTTPS连接,但是如果输入 http://yourdomain
浏览器与服务器的连接还是HTTP连接。这里我们通过配置Caddyfile的内容就可以实现强制HTTPS,原理很简单,将HTTP重定向至HTTPS即可。
- vi Caddyfile
http://www.1996.live http://1996.live https://1996.live{ redir https://www.1996.live{url} } # 请替换为自己的域名 https://www.1996.live { gzip # 请替换为自己的邮箱 tls imqksl@gmail.com root /www log /root/log/log.log errors /root/log/error.log }
- docker-compose down
- docker-compose up -d
整站HTTPS
- 我们的网站可能不只一个Web服务,比如我除了
www.1996.live
的主页以外,在另一台服务器上还跑了一个harbor
镜像仓库,域名已经指向当前服务器的IP地址,镜像仓库只能通过IP+端口访问。
hub.1996.live
http://www.1996.live http://1996.live https://1996.live{ redir https://www.1996.live{url} } # 请替换为自己的域名 https://www.1996.live { gzip # 请替换为自己的邮箱 tls imqksl@gmail.com root /www log /root/log/log.log errors /root/log/error.log } # 添加下面的这部分内容即可 http://hub.1996.live{ redir https://hub.1996.live{url} } https://hub.1996.live { gzip tls imqksl@gmail.com # 填写另一个应用所在服务器的IP地址和端口即可 # 一般填局域网IP地址,速度更快,更安全。 proxy / http://157.230.159.156 log /root/log/log.log errors /root/log/error.log }
- docker-compose down
- docker-compose up -d
最后
昨晚与 Go语言中文网站长
polaris语音聊了一个多小时,认识到自己真的是太菜了,需要学习的东西还有很多。最后聊到了写博客,站长建议我写博客,看了看自己 Go 方面的笔记实在是没啥营养,感觉自己这篇部署HTTPS&QUIC的文章可能比较实用,大家搭建博客的时候可以用到,所以将它分享出来。
写到这里发现很多自己了解的东西,想把它表达清楚确实是还需要去理解一些深层次的东西以及锻炼口头表达能力才行。这两篇文章有很多地方表达不够清除、准确、严谨,后续会继续完善,修改的,欢迎各位看官一起交流,指点。
参考链接
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Kubernetes部署教程
- Kubernetes 教程之应用部署
- Kubernetes部署实操教程
- 超详细 Pycharm 部署项目视频教程
- 命令式与声明式——Kubernetes部署教程
- 入门教程 | 从安装部署开始学习 Elasticsearch
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。