前言

如今HTTPS几乎成了每一个网站的标配,它利用SSL/TLS来加密数据包,提供对网站服务器的身份认证,保护交换数据的隐私与完整性,避免了以往HTTP的内容劫持、各种各样的垃圾内容,同时也是网站身份的一个象征。可是各大证书提供商的证书都不是很便宜,其授权过程也稍加繁琐,有时候我们自己部署一个小小的网站,只是需要HTTPS的安全性而已,这样做或许有点大动干戈了。幸好有Let's Encrypt,我们可以申请这个免费的HTTPS证书,

利用caddy一键获取证书

以下内容摘自维基百科

Caddy服务器是一个开源的,使用 Golang 编写,支持 HTTP/2 的 Web 服务端。它使用Golang 标准库提供HTTP 功能。 Caddy 一个显著的特性是默认启用HTTPS。它是第一个无需额外配置即可提供HTTPS 特性的Web 服务器。

Caddy是一个轻量级的、跨平台的Web服务端,有很多方便实用的功能和插件,这里主要介绍它的HTTPS功能。

一般我们的vps的公网IP有两种情况,一是主机商直接将IP映射到服务器上,另一种是先到达主机商的网卡处,然后将IP通过NAT映射到服务器(如GCP、AWS、Aliyun等,一般是带有安全组的)。

我们在Vps执行ifconfigip -addr列出自己的网卡列表,如果其中有你的公网IP,那么属于第一种情况。否则是第二种。

执行

首先在域名提供商那里,将你希望解析的域名里的A记录的记录值填写位Vps的公网IP。

然后访问caddy的官方网站,点击FREE DOWNLOAD,在PLATFORM根据自己的Vps系统选择,然后PLUGINS根据自己的需求选择,如只为了https则不选择,然后在LICENSE里选择个人(免费)。
图片说明

都确认好了之后有一个下载按钮,我们可以点击下载手动下载安装包,亦可以执行底部的

curl https://getcaddy.com | bash -s personal

直接在Linux的Vps安装这个程序。

caddy默认采用当前路径下的Caddyfile作为配置文件,我们建立好这个文件,在其中输入

domain.example.com

情况一

在这种情况下,操作起来较为方便一些。

就是这么简单,保存文件,执行caddy,这个时候你的HTTPS网站就启动成功了!并且它会将HTTP请求给强制跳转到HTTPS,保证了网站在数据传输中的安全。

情况二

这里就稍微多了一些步骤了
待更

拓展

有时候我们的网站并不是静态的网页,可能会是railsJavaWeb等,或是我希望不同的域名指向同一IP时访问不同的Web服务呢,这个时候就是Caddy大显身手的时候了。

查看官方文档可以发现,Caddy自带了一个proxy功能,我们可以利用它来实现负载均衡以及上述的功能。

假如我们的Web服务a启动在本机的8080端口,Web服务b启动在本机的8443端口,现在继续编辑上边的文件

domain.example.com {
    proxy / 127.0.0.1:8080
}
domain2.example.com {
    proxy / 127.0.0.1:8443
}

这里需要注意的是,这样设置后,在浏览器使用ip访问将会出现

404 Site xxx.xxx.xxx.xxx is not served on this interface

正是因为我们只设置了域名,它并不知道IP需要指向哪一个服务,所以使用域名访问即可

这样既给本地的web服务轻松的加上了https,也实现了不同的域名对应的不同的web服务这一功能。