前言
如今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执行ifconfig
或ip -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,保证了网站在数据传输中的安全。
情况二
这里就稍微多了一些步骤了
待更
拓展
有时候我们的网站并不是静态的网页,可能会是rails
、JavaWeb
等,或是我希望不同的域名指向同一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服务这一功能。