Caddy一键部署,配置反向代理,申请免费HTTPS证书

Scroll Down

来源:NanCheung`s Blog
链接:https://blog.nancheung.com /archives/984096
商业转载请联系作者获得授权,非商业转载请注明出处。



我一直觉得作为一个自用的微型vps,没必要使用nginx这种复杂的web服务端。我以前一直使用goflyway,它是一个使用Golang编写的自带反代理功能的隧道HTTP隧道代理工具。但是goflyway的反代理功能太弱了。这次我替换了一个更好的工具——Caddy。

什么是caddy

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

简单的说,caddy是一个配置简单、默认支持https特性的web服务端。

注意

本文所有指令前都加上了sudo,如果你是root用户,可以省去sudo。

如何安装Caddy

一、使用官方一键脚本安装

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

安装完毕后,执行 which caddy 可以看到,caddy已经被安装到了 /usr/local/bin/caddy中。

二、配置caddy

  1. 创建配置文件放到 /etc/caddy 目录

    Caddy 的配置文件叫做 Caddyfile,我们一般放在 /etc/caddy

    	sudo mkdir /etc/caddy
    	sudo touch /etc/caddy/Caddyfile
    	sudo chown -R root:www-data /etc/caddy
    
    Bash
  2. 配置ssl证书目录

    caddy 会自动生成 ssl 证书,需要一个文件夹放置 ssl 证书

    	sudo mkdir /etc/ssl/caddy
    	sudo chown -R www-data:root /etc/ssl/caddy
    	sudo chmod 0770 /etc/ssl/caddy
    
    Bash
  3. 配置 systemd

    了解更多systemd的知识

    将caddy使用systemd配置成为一个服务,方便管理,并且开机自启动。Caddy配置systemd的官方文档

    	sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service
    	sudo systemctl daemon-reload
    	sudo systemctl enable caddy.service
    	sudo systemctl status caddy.service
    
    Bash

    以上四条命令的意义依次分别是:

    1. 从 github 下载 systemd 配置文件放到systemd的启动文件目录下
    2. 重新加载 systemd 配置
    3. 设置 caddy 服务自启动
    4. 查看 caddy 状态

三、配置

此处只以本站的配置为例,更高阶更详细的配置应该看看 Caddy文档

  1. 编辑Caddyfile

    打开Caddyfile文件,上文配置的路径是:/etc/caddy/Caddyfile

  2. 加入反代理配置

    	#第一行一定是你的访问地址
    	blog.nancheung.com {
    		gzip
    		#此处配置一个任意邮箱,caddy会自动帮你申请免费ssl证书
    		tls blog@nancheung.com
    
    		#这里是配置你需要转发到哪里
    		proxy / localhost:8888 {
    			transparent
    		}
    	}
    
    Bash

    上例是一个简单的代理服务配置。第一行为自己的域名,tls后面加上邮箱会自动申请let’sencrypt ssl证书。

  3. 重启caddy使配置生效

    	sudo systemctl restart caddy.service
    
    Bash

四、管理caddy的指令

  1. 启动caddy

    	sudo systemctl start caddy.service
    
    Bash
  2. 停止caddy

    	sudo systemctl stop caddy.service
    
    Bash
  3. 重启caddy

    	sudo systemctl restart caddy.service
    
    Bash

相关资料

官网:https://caddyserver.com/
GitHub:https://github.com/mholt/caddy
Caddy中文文档:https://dengxiaolong.com/caddy/zh/