苏苏的博客

简约至极

Caddy Server基本用法

命令行参数

在当前目录下开启静态服务器

caddy -host t.xxx.cn

首次运行后会提示输入邮箱,用于获取https证书,获取完证书即开启成功

默认启用http2,默认http端口80,https端口443,默认启用http跳转到https,默认首页自动加载index.html

使用-root参数可以设置根目录,默认为当前目录

相关文件会存储于~/.caddy文件夹中.

sudo setcap cap_net_bind_service=+ep ./caddy

使用QUIC

caddy -host t.xxx.cn -quic 使用quic协议

使用quic参数后,通过netstat -anltup 可以查看到tcp和udp的80和443端口都被监听.

Chrome浏览器支持quic,可以通过chrome://net-internals/#quic 查看是使用的是quic还是http2

使用配置文件

Caddyfile

:80 {
        log stdout
        errors stderr
        redir https://{host}{uri}
}

:443 {
        log stdout
        errors stderr
        gzip

        tls /caddy/ssl/default.crt /caddy/ssl/default.key

        root /caddy/sites.d/0-default
        markdown /
}

site1.local {
        log stdout
        errors stderr
        gzip

        proxy / dockerhost.local:32000 {
                policy least_conn
                transparent
                insecure_skip_verify
                fail_timeout 10s
                max_fails 1
                try_duration 1s
        }
}
site2.local {
        log stdout
        errors stderr
        gzip

        proxy / dockerhost.local:32001 {
                policy least_conn
                transparent
                insecure_skip_verify
                fail_timeout 10s
                max_fails 1
                try_duration 1s
        }
}

an example conf

g.xx.cn:443 {
    log /var/log/caddy/access.log
    errors /var/log/caddy/error.log
    gzip
    status 204 {
        /gen_204
        /generate_204
    }
    tls /root/certificates/xx.crt /root/certificates/xx.key
    proxy / https://www.google.ca {
        header_upstream Host "www.google.ca"
    }
}
t.xx.cn:443 {
    root /root
}
h2.suconghou.cn:443 {
    log stdout
    errors stderr
    root /path/to/your/site
    forwardproxy {
        hide_ip
        hide_via
        basicauth user pass
        probe_resistance secret.localhost
        serve_pac        /secret-proxy.pac
    }
}

配置fastcgi链接php-fpm

php-fpm开启php-fpm服务,监听 127.0.0.1:9000

Caddyfile

localhost:9098
tls off
gzip
root /data/
fastcgi / 127.0.0.1:9000 php

本地使用tls off关闭自动获取https证书

fastcgi / 127.0.0.1:9000 php最后面的一个php是预设值的值,相当于

ext   .php
split .php
index index.php

caddy 会默认在当前目录查找Caddyfile 可以使用参数-conf指定配置文件路径

log stdout proxy / https://localhost:8081 { header_upstream Host “xmpp.git.suconghou.cn” header_upstream X-Forwarded-Proto “https” insecure_skip_verify }

ejabberdctl register admin langzhetest.com 123456

执行caddy -conf /etc/Caddyfile -validate验证配置文件。

caddy -conf /etc/Caddyfile开启服务

注意 访问地址需要与配置文件中声明的域名地址相同

配置文件中是localhost:9098,不能用127.0.0.1:9098访问。

log to stdout

systemctl service example , log collectioned by journalctl

/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp

local https

caddy -host localhost "proxy / localhost:9000" "tls self_signed"

sudo caddy -host ssl.git.suconghou.cn --port 443 "proxy / localhost:8000" "tls self_signed"