史上最简单的部署HTTPS&QUIC教程

栏目: 编程工具 · 发布时间: 5年前

内容简介:虽然说是从0开始,但是你还是得准备一些东西:

前言

  • emmm~,今天是9102年儿童节,都9102年了,你的网站还是万年HTTP吗,Chrome已经看你不爽很久了,得益于Let's Encrypt,现在申请TLS证书变得异常简单。

史上最简单的部署HTTPS&QUIC教程

  • 本文将分享我是如何开启整站HTTPS和QUIC,网上关于QUIC的介绍文章挺多的,既然你在看这篇文章,相信是对QUIC有一定了解的,本文不在做重复介绍相关概念。
  • 网上的很多文章教程略微复杂,本文将带领你从0开始部署,大学生都学得会。
  • 本文使用的浏览器是Chrome73,协议是QUIC43。最终效果如下。

史上最简单的部署HTTPS&QUIC教程

前置条件

虽然说是从0开始,但是你还是得准备一些东西:

Docker&Docker-compose

DNS解析

  • 如果你知道如何配置DNS,可以跳过
  • 主机记录@,记录类型A,记录值你的服务器公网IP地址。
  • 主机记录*,记录类型CNAME,记录值你域名(末尾有个.)
  • 大概就是下面这个样子。 史上最简单的部署HTTPS&QUIC教程

注意

  • 这里我默认你已经安装好了 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应该就是正常启动了。

史上最简单的部署HTTPS&QUIC教程

  • docker exec -i -t caddy-server sh

执行这条命令后,我们会进入该容器内容,可以通过命令行左侧路径分辨出来。

  • caddy -quic -conf /etc/Caddyfile

执行这条命令后,Caddy会询问是否同意相关协议。怎么选,同学你自己心里有数吧。

史上最简单的部署HTTPS&QUIC教程

然后Caddy会自动去申请HTTPS证书,免费的,一般两分钟以内完成。 这里可能会让你再输入一次邮箱地址。完成后,大概就是这个样子。

史上最简单的部署HTTPS&QUIC教程

通过域名访问即可,注意使用https://

请关闭科学上网,代理工具等,因为他可能会将UDP数据代理至TCP,而QUIC基于UDP,就会导致QUIC连接建立失败,此时连接使用HTTP/2 以及TLS1.3证书。

请确保服务器防火墙允许80,443端口流量通过

史上最简单的部署HTTPS&QUIC教程

善后处理

  • 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+端口访问。

史上最简单的部署HTTPS&QUIC教程

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

史上最简单的部署HTTPS&QUIC教程

最后

昨晚与 Go语言中文网站长 polaris语音聊了一个多小时,认识到自己真的是太菜了,需要学习的东西还有很多。最后聊到了写博客,站长建议我写博客,看了看自己 Go 方面的笔记实在是没啥营养,感觉自己这篇部署HTTPS&QUIC的文章可能比较实用,大家搭建博客的时候可以用到,所以将它分享出来。

写到这里发现很多自己了解的东西,想把它表达清楚确实是还需要去理解一些深层次的东西以及锻炼口头表达能力才行。这两篇文章有很多地方表达不够清除、准确、严谨,后续会继续完善,修改的,欢迎各位看官一起交流,指点。

参考链接

怎么把网站升级到QUIC以及QUIC特性分析

本站开始支持 QUIC

Caddy Web服务器QUIC部署


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

刷屏

刷屏

[美] 凯文•阿洛卡 / 侯奕茜、何语涵 / 中信出版社 / 2018-10-1 / 68.00

1. YouTube流行趋势经理,解密如何打造爆款视频 在视频时代,制造互动,才能创造潮流 用户不再是被动的观众,而是主动的传播者 2. 《刷屏》以行内人视角解读: 病毒视频 粉丝经济 网红产业 平台如何为内容创作者赋能 3. 你是否常常被病毒视频刷屏?你是否觉得很多网红火爆到“无法用常理解释”? 视频时代已经到来,我们每天观看网络......一起来看看 《刷屏》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具