抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

官网:https://caddyserver.com/

准备 docker-compose.yml

当然也可自行官网下载二进制文件或 apt install 等直接安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
services:
caddy:
image: caddy:2.8.4-alpine
restart: always
cap_add:
- NET_ADMIN
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./site:/srv

volumes:
caddy_data:
caddy_config:

准备 Caddyfile

反向代理

1
2
3
4
# 你的域名,记得将域名解析到你的服务器,并开启80 443安全组
your.example.com {
reverse_proxy http://192.168.100.100:8080 # 你的应用地址,一般ip:port
}

运行

等待片刻访问域名即可,SSL已自动装配并会自动续期

1
docker compose up -d

若无法访问一般是域名解析没配置或安全组没开,也可以通过以下命令查看日志,确认是否有报错

1
docker compose logs -f

更多

一般服务器上会部署多个应用,多复制一份即可

1
2
3
4
5
6
7
a.example.com {
reverse_proxy http://192.168.100.100:8080
}

b.example.com {
reverse_proxy http://192.168.100.100:18080
}

若需要匹配前缀

1
2
3
your.example.com {
reverse_proxy /webapi/* http://192.168.100.100:8080
}

若需要传递请求头例如 Host

1
2
3
4
5
your.example.com {
reverse_proxy http://192.168.100.100:8080 {
header_up Host "real.example.com"
}
}

若需要部署静态站点

1
2
3
4
5
your.example.com {
root * /srv/html # 指向容器内目录,并在主机外对应目录放置文件 ./site/html
encode gzip # 开启gzip
file_server
}

更多用法可查看 https://caddyserver.com/docs/caddyfile-tutorial

评论