Https 就是这么简单之 Caddy2

  |   0 评论   |   0 浏览

  之前博客一直跑的是 Caddy1.0 版本,很轻松。就博客和小应用来说 Caddy 做 Web 服务就够了,可以省去很多事情,逼格高而且不失优雅。
之前写的一些关于 caddy1.0 的使用姿势

基于 caddy 提升 https 安全等级
caddy 实现 google 镜像站点

01. 起因

  看同事在用阿里云的赛门铁克 ssl 证书,实在是看不下去了,就给同事安利了 caddy。当时没多想,随手丢了一个百度到使用文档,然后同事自由发挥了下,编译安装了 caddy2,跑不起来,很纠结。当时因为 caddy 只有 1.0 版本,2 版本一直处于 beta 阶段,就没有用,结果翻车了。。。
于是被动的去学习了一波。。

02. Caddy 简介

  caddy 的文档还是蛮全的,不过有些细节需要你自己的发掘,摆好姿势和造型才能跑的更流畅。

  官方文档:https://caddyserver.com/docs/getting-started
GitHub 文档:https://github.com/caddyserver/caddy/wiki
example:https://github.com/caddyserver/caddy/wiki/v2:-Caddyfile-examples

  caddy2 是使用 go 语言编写的轻量级的应用
作为一个很好的选择:

  • 网络服务器
  • 反向代理
  • 边车代理
  • 负载均衡器
  • API 网关
  • 入口控制器
  • 系统管理员
  • 流程主管
  • 任务调度器
  • (任何长时间运行的过程)

  尽管它具有与其他层一起工作的能力,但主要在 OSI 模型的 L4(传输层)和 L7(应用层)上运行。

  Caddy2 与 Caddy1 的主要区别就是,caddy 使用 API 的方式,以上传 JSON 文件进行配置站点,同时也兼容之前的 Caddyfile 配置文件。

03. 快速搭建 https 站点

  1.下载二进制文件

1wget https://github.com/caddyserver/caddy/releases/download/v2.0.0-beta12/caddy2_beta12_linux_amd64 
  1. 拷贝到 bin 下并赋予可执行权限
1mv caddy /usr/bin/ && chmod 777 caddy
  1. 运行 caddy 守护进程,在当前终端继续操作的化可以使用 start
1caddy run

  image.png

  4.打开另外一个终端,并查看当前配置。默认情况下配置是空的,因为我之前操作过,所有会有一些配置内容

1curl localhost:2019/config/

  image.png

  5.创建一个配置文件

1vim caddy.json
 1{  
 2    "apps":{  
 3        "http":{  
 4            "servers":{  
 5                "srv0":{  
 6                    "listen":[  
 7                        ":443"  
 8                    ],  
 9                    "routes":[  
10                        {  
11                            "handle":[  
12                                {  
13                                    "handler":"subroute",  
14                                    "routes":[  
15                                        {  
16                                            "handle":[  
17                                                {  
18                                                    "handler":"reverse_proxy",   #处理方式为反向代理
19                                                    "health_checks":{  
20                                                        "active":{  
21                                                            "expect_status":2,  
22                                                            "path":"/health"            #健康检查的路径
23                                                        }  
24                                                    },  
25                                                    "transport":{  
26                                                        "protocol":"http",  
27                                                        "read_buffer_size":4096  
28                                                    },  
29                                                    "upstreams":[  
30                                                        {  
31                                                            "dial":"127.0.0.1:8080"  
32                                                        }  
33                                                    ]  
34                                                }  
35                                            ],  
36                                            "match":[  
37                                                {  
38                                                    "path":[  
39                                                        "/"  
40                                                    ]  
41                                                }  
42                                            ]  
43                                        }  
44                                    ]  
45                                }  
46                            ],  
47                            "match":[  
48                                {  
49                                    "host":[  
50                                        "opschina.top",  
51                                        "www.opschina.top"  
52                                    ]  
53                                }  
54                            ]  
55                        }  
56                    ]  
57                }  
58            }  
59        }  
60    }  
61}
62
  1. 上传配置文件
1curl localhost:2019/load  -X POST  -H "Content-Type: application/json"  -d @caddy.json

  7.稍等片刻便可以发现生成好了
访问我们的网站 www.opschina.top,这时候发现会自动跳转到 https,搞定收工!
image.png

04.相关参数

 1[[email protected] ~]# caddy help
 2Caddy is an extensible server platform.
 3
 4usage:
 5  caddy <command> [<args...>]
 6
 7commands:
 8  adapt                            将配置文件转换成json
 9  environ                          打印环境变量
10  file-server                      启动可付诸生产的文件服务器
11  hash-password                    用base64加密密码
12  help                             显示caddy的命令帮助
13  list-modules                     列出已安装的模块
14  reload                           热加载
15  reverse-proxy                    快速且可适用生产的反向代理
16  run             		   启动Caddy进程并无限期阻止
17  start           		   后台运行caddy
18  stop                             停止caddy
19  validate        		   测试配置文件是否正确
20  version         		   打印版本号
21
22Use 'caddy help <command>' for more information about a command.
23
24Full documentation is available at:
25https://caddyserver.com/docs/command-line
26

  后续有时间,给大家分享下深入使用下 Caddy2.

  有个很深的感触,就是很多应用都可以使用 API 的方式来进行配置启动服务了

---------------------------------------------------------------
>> 博客地址:https://blog.mufengs.com
>> 邮箱地址:[email protected]
>> 微信帐号:Do8080
>> Github : https://github.com/mufengcoding
---------------------------------------------------------------