美文网首页
下一个 nginx?caddy 自动 https 真香

下一个 nginx?caddy 自动 https 真香

作者: LinkinStar | 来源:发表于2020-11-14 15:23 被阅读0次

    前言

    我们通常在部署 web 服务的时候往往会选择 nginx 作为最前面的一个狠角色,它的性能和能力大家也是有目共睹的,反向代理负载均衡等等。而作为后起之秀 caddy 却不被人所熟知,不过渐渐的也开始展露头角。
    今天我就来介绍这个 caddy ,为什么我会称它有可能成为下一个 nginx。

    我先列举几个痛点你看下:

    1. nginx 的配置文件你是否感觉有时候有点臃肿
    2. https 需要购买或者申请证书,然后配置是否觉得麻烦?
    3. linux 下安装 nginx 需要部分依赖

    而 caddy 确实给我了一种眼前一亮的感觉。

    使用

    官网:https://caddyserver.com/

    安装

    https://caddyserver.com/docs/download
    安装很简单,直接下载对应的二进制文件即可,或者按照对应到操作系统去安装也可以。没有其他依赖。

    使用

    https://caddyserver.com/docs/getting-started
    一个命令就可以启动,caddy,默认会去当前目录下寻找 Caddyfile 配置文件,也可以通过 --config 去指定文件位置

    caddy start
    caddy stop
    caddy reload
    

    反向代理

    https://caddyserver.com/docs/caddyfile/directives/reverse_proxy

    https://www.xxxx.com {
      reverse_proxy /api/user* {
        to 192.168.1.101:9000
      }
    }
    

    静态文件

    https://www.xxxx.com {
      root * /home/linkinstar/www
      file_server
    }
    

    外网服务使用 https

    https://caddyserver.com/docs/quick-starts/https

    https://caddyserver.com/docs/automatic-https

    caddy 最让我惊讶的是自动的 https 功能,只要你有一个可以正常访问的域名,将域名指向你外网服务器对应的 ip,然后向上面一样配置好 Caddyfile,只要域名一致,https 就完成了,不需要你额外申请证书,不需要做其他任何的操作,真的很棒👍,可谓是懒人必备

    原理是,它会去 https://letsencrypt.org/ 调用对应的接口去申请证书,这是一个免费证书的申请网站,

    本地使用 https 证书

    当我们的一些内网服务器需要使用 https 证书的时候,怎么办呢?因为内网的服务器没有公网 IP,caddy 去 letsencrypt 申请证书的时候无法验证,所以需要曲线救国。前提你需要一个域名。https://zhuanlan.zhihu.com/p/63412372

    申请证书

    wget https://dl.eff.org/certbot-auto
    chmod a+x certbot-auto

    certbot-auto --manual --preferred-challenges dns certonly

    接下来根据提示依次输入域名,和一些提示,一般输入y表示同意即可,知道让你去添加一条 txt 解析记录并验证的时候

    将证书输出验证内容进行 dns 解析配置

    image.png

    配置完成之后会在 /etc/letsencrypt/live/xxx.com 目录下生成对应的公钥私钥

    配置Caddyfile

    xxx.com:443 {
      tls /etc/letsencrypt/live/xxx.com/cert.pem /etc/letsencrypt/live/xxx.com/privkey.pem
    }
    

    性能比较

    https://caddy.community/t/siege-benchmarks-nginx-vs-caddy-identical-systems/2962

    从性能上来说,确实 nginx 要更胜一筹,而且官方也承认(毕竟 nginx 的设计就是干这个的)

    不过从比较的数据上来说,能让普通用户使用很满意了,并没有一定需要追求极致的性能体验,毕竟免费的 https 已经有点香了

    总结

    优点

    1. caddy 发挥了 go 传统的优势安装没有依赖,使用方便
    2. 自动化的 https 证书的申请,很让人舒服
    3. 配置项更加清晰和简单,一目了然

    缺点

    1. 性能比 nginx 略逊一筹
    2. 重启的时候 https 会重新申请,会有短暂的停顿
    3. 使用案例少了一些

    总的来说,如果你正需要一个免费方便的 https 的网关,那就试试 caddy 吧,一定不会让你失望的,而 caddy 也慢慢在发展,虽然从设计角度讲模型可能不如 nginx,但是从使用角度讲,可能我后续更偏爱 caddy 一些

    参考博客

    https://segmentfault.com/a/1190000022733237

    相关文章

      网友评论

          本文标题:下一个 nginx?caddy 自动 https 真香

          本文链接:https://www.haomeiwen.com/subject/pzcbbktx.html