运维

CentOS 7 升级网站协议至quic协议

MarginNote 3 - Mac端PDF阅读批注工具 激活码价格:¥69.00
赤友 NTFS for Mac 助手 -  磁盘硬盘格式读写软件注册激活码价格:¥35.00
虫洞 -  iPhone安卓投屏操控 电脑手机多屏协同,价格:¥45.00
namesilo全网最便宜域名注册商,输入折扣码:nsilo20立减1美元!

QUICQuick UDP Internet Connection)是谷歌制定的一种基于UDP的低时延的互联网传输层协议,较http2具有0RTT的优势,虽然TLS1.3也具有0RTT的特点,QUIC是有Google主导,只在GoogleOpera等浏览器上支持,且需要手动开启 开启方法:在 chrome://flags/ 中找到 ExperimentalQUIC protocol, 设置为Enabled,重启浏览器生效。CentOS 7 升级网站协议至quic协议服务器部署了nginx,通过nginx来进行代理转发各个请求,但是搜索一圈,了解到nginx暂时没有计划支持quic,于是另寻他径,功夫不负有心人,查阅众多资料了解到caddy支持quic(caddy是一款可以自动部署https的服务器,百度一番,用他来自动部署https的不多,倒是用来支持quic的挺多,这大概不是caddy开发者的初衷吧),caddy虽好,但是不如nginx生态丰富,我也不想放弃nginx,于是采取一个折衷的办法,通过docker镜像来部署caddy支持quic。废话不多说,现在来细说升级步骤:

docker安装要求参考:docker CE on CentOS
先决条件:

1、linux内核4.0+
2、linux磁盘格式为ext4xfs

一、检查内核版本

uname -r

若内核版本低于4.0,需要升级内核,升级内核方法如下

#安装ELRepo仓库,使用清华镜像
rpm -Uhv https://mirrors.tuna.tsinghua.edu.cn/elrepo/kernel/el7/x86_64/RPMS/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

#yum升级内
yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml -y

#修改启动内核
cat /boot/grub2/grub.cfg |grep menuentry #查看内核
grub2-set-default "CentOS Linux (4.13.0-1.el7.elrepo.x86_64) 7 (Core)"  #默认内核改为最新内核

#重启服务器
reboot

2、安装docker

yum install docker-ce docker-ce-cli containerd.io

3、修改docker镜像源,加快下载速度

cd /etc/docker && vi daemon.json

#添加如下内容
{
    "registry-mirrors":["http://registry.docker-cn.com"]
}

wq #保存退出

4、启动docker

systemctl start docker

安装步骤部署完docker现在进入配置quic

1、在用户目录下新建caddy文件夹,新建Dockerfile文件,添加如下内容

FROM ubuntu:latest
LABEL maintainer="[email protected]"

RUN apt-get update

RUN set -x  \
    && apt-get install curl -y \
    && curl https://getcaddy.com | bash -s personal && which caddy

2、制作镜像

docker image build -t docker-caddy .

在开启docker服务前检查443端口是否放开udp安全限制
1、编写Caddyfile 配置文件

https:YOUR_DOMAIN
gzip
tls /path/YOUR.pem /path/YOUR.key
proxy / http://172.17.0.1:8080 {
  header_upstream Host {host}
  header_upstream X-Real-IP {remote}
  header_upstream X-Forwarded-For {remote}
  header_upstream X-Forwarded-Proto {scheme}
}
log /path/logs/caddy_access.log
errors /path/logs/caddy_errors.log

2、在ng中添加如下请求头,告诉浏览器服务器支持quic

add_header alt-svc 'quic=":443"; ma=2592000; v="46,44,43,39"';

此请求头的作用是告诉浏览器服务器支持quic,若浏览器也支持quic,后续的所有请求都是通过quic来发出,若浏览器不支持quic,还是走正常的http请求
3、启动docker镜像

docker container run -d -p 443:443/udp -v /YOUR_PATH:/path docker-caddy:latest caddy -quic -conf /path/Caddyfile

至此,quic已完成了部署,在浏览器窗口输入对应网址,查看network中的protocol是否是http2+quic/XX

1、最开始,Caddyfileproxy配置是转发到127.0.0.1,但是访问网址的时候,总是报502错误,查看日志了解到服务并没有真正转发出去,因为docker容器运行的时候有hostbridgenone三种网络可供配置,默认是bridge,与宿主机网络是互相隔离的。在安装Docker的时候,会在宿主机安装一个虚拟网关docker0,我们可以使用宿主机在docker0上的IP地址来代替localhost/127.0.0.1,查看docker0命令:

ip addr show docker0

2、网站服务由node提供,node启动服务是app.listen绑定了127.0.0.1 这个host,导致docker0网段访问不到服务,注释掉绑定的host 服务便正常了。

(0)

本文由 podipod软库网 作者:DevOps 发表,转载请注明来源!

关键词:, , ,
ToDesk - 安全好用流畅远程控制软件 替代TeamViewer,价格:¥108.00
Eagle - 图片收集管理必备软件 激活码价格:¥119.00
PDF Expert 2 - Mac上优秀的PDF阅读编辑工具,价格:¥119.00

热评文章

发表评论