Aldebaran

人生最棒的感觉,就是你做到别人说你做不到的事。

0%

使用Caddy 替代Nginx,全站升级https

指原莉乃

Caddy介绍

作为新兴 Web 服务器,Caddy 提供了很多简单易用的功能而没有历史的包袱,其默认支持并且能帮你自动配置 HTTP/2、HTTPS,对于 IPV6、WebSockets 都有很好的支持。基于 Go 编写的 Caddy 天生对于多核具有很好的支持,并且其丰富的插件系统提供了文件管理、文件上传、基于 MarkDown 的博客系统等等开箱即用的扩展功能。

安装

官网下载:https://caddyserver.com/download

caddy的下载页面有别于其他的web服务器:允许定制自己需要的插件。 请根据自己的实际需求在官网上配置好脚本。

例如:

$ curl https://getcaddy.com | bash -s personal http.cache,http.geoip,http.realip,tls.dns.cloudflare

快速启动

以Linux为例:

我们将用“example.com”作为例子,需要保证外部可以通过公网访问到80和443端口,并且域名被解析到你的服务器。反之,如果你还没有域名,你可以先使用“localhost”作为替代。

$ sudo setcap cap_net_bind_service=+ep $(which caddy)
$ caddy -host example.com

当第一次使用一个真正的域名(不是localhost)运行Caddy时,会出现提示要求输入你的email地址。这是因为Caddy需要验证你的域名,并将验证信息安全地存储在硬盘上。

Caddyfile配置

Caddyfile是用来配置Caddy如何运行的文本文件。

编辑

  • proxy

    正常的例子如下:

      $ vim ../path/to/Caddyfile
      https://gitlab.example.com {
          log git.access.log 
          errors git.errors.log {
              404 /opt/gitlab/embedded/service/gitlab-rails/public/404.html
              422 /opt/gitlab/embedded/service/gitlab-rails/public/422.html
              500 /opt/gitlab/embedded/service/gitlab-rails/public/500.html
              502 /opt/gitlab/embedded/service/gitlab-rails/public/502.html
          }
    
          proxy / http://127.0.0.1:8181 {
              fail_timeout 300s
              transparent
              header_upstream X-Forwarded-Ssl on
          }
      }
    
  • cloudflare/dnspod

    自动续签证书,下面以cloudflare为例

      https://www.XXXXX.com {
          gzip
    
          tls email@example.com
          tls {
              dns cloudflare
          }
          root /data/wwwroot/www.XXXXX.com/webroot/public/
          log /data/httplogs/www.XXXXX.com_access.log
      }
    

    接下来,确保CloudFlare密钥可用于CaddyServer,这是通过环境变量完成的。编辑/etc/systemd/system/multi-user.target.wants/caddy.service 文件和 [Service] 部分添加两个环境变量:

      Environment=CLOUDFLARE_EMAIL=you_email@example.com
      Environment=CLOUDFLARE_API_KEY=123456abcd123sadfs345sdge4t5fdsg34
    

启动

$ caddy -conf ../path/to/Caddyfile

参考文档

caddy官网

https://dengxiaolong.com/caddy/zh/automatic-https.html

https://www.cylindric.net/web/caddyserver-and-cloudflare