文章目录
  1. 1. 官方安装文档
  2. 2. 简介
  3. 3. 适用场景
  4. 4. 安装
  5. 5. 配置文件路径
  6. 6. 服务管理
  7. 7. 配置示例
  8. 8. 更多配置
    1. 8.1. 1. 负载均衡
    2. 8.2. 2. 路由和重定向
    3. 8.3. 3. WebSocket 支持
    4. 8.4. 4. SSL/TLS 配置
    5. 8.5. 5. 基于路径的反向代理
    6. 8.6. 6. 自定义错误页面
    7. 8.7. 7. 添加 HTTP 头
    8. 8.8. 8. 使用插件
    9. 8.9. 9. 设置速率限制
    10. 8.10. 10. 访问日志和错误日志
    11. 8.11. 11.真实ip

官方安装文档

Install - Caddy Documentation

简介

Caddy 是一个现代的开源 Web 服务器,具有以下几个主要特点:

  1. 自动化 HTTPS
    Caddy 自动为所有托管的网站配置 HTTPS,使用 Let’s Encrypt 提供的证书。这意味着你无需手动处理证书的生成和续期,极大地简化了安全配置。
  2. 易于配置
    Caddy 使用一个简单的配置文件(Caddyfile),使得配置反向代理、负载均衡、路由等功能变得直观易懂。其语法设计使得用户可以快速上手。
  3. 反向代理
    Caddy 可以轻松配置为反向代理,允许你将请求转发到其他服务或应用程序。这对于微服务架构或多服务应用程序特别有用。
  4. 插件系统
    Caddy 支持插件,可以扩展其功能,例如身份验证、速率限制、监控等。这使得 Caddy 可以适应各种需求。
  5. 支持 HTTP/2 和 QUIC
    Caddy 默认支持 HTTP/2 和 QUIC,这些现代协议提供了更好的性能和用户体验。
  6. 多平台支持
    Caddy 可以在多种操作系统上运行,包括 Linux、Windows 和 macOS。
  7. 丰富的社区和文档
    Caddy 拥有活跃的社区和丰富的文档,用户可以轻松找到所需的支持和示例。

适用场景

  • 静态网站托管:Caddy 非常适合托管静态网站。
  • API 网关:可以用作 API 的反向代理。
  • 微服务架构:在微服务环境中管理请求和负载均衡。
  • 开发和测试环境:快速搭建和测试本地开发环境。

安装

以Debian12为例,依次执行命令

1
2
3
4
5
6
7
8
9
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

sudo apt update

sudo apt install caddy

配置文件路径

1
/etc/caddy/Caddyfile

服务管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 启动Caddy
systemctl start caddy

# 开机自启
systemctl enable caddy

# 重启Caddy2
systemctl restart caddy

# 停止Caddy2
systemctl stop caddy

# 重载配置Caddy配置文件(修改配置文件后执行)
systemctl reload caddy

# 查看Caddy2运行状态
systemctl status caddy

配置示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 反向代理
example.com {
reverse_proxy 127.0.0.1:8080 #这里输入你想反代的服务器IP和端口
encode gzip
}

# 反向代理+基本认证
example.com {
basicauth / username password
reverse_proxy localhost:3000
}

# 反向代理+负载均衡
example.com {
reverse_proxy backend1:3000 backend2:3000
}

# 重定向
example.com {
redir https://naiyous.com{uri}
}

更多配置

1. 负载均衡

你可以通过指定多个后端服务器来实现负载均衡。Caddy 会自动在这些服务器之间分配流量。

1
2
3
4
5
example.com {
reverse_proxy backend1:3000 backend2:3000 {
lb_policy round_robin
}
}

2. 路由和重定向

你可以配置不同的路由和重定向规则。

1
2
3
4
5
example.com {
reverse_proxy /api/* localhost:3001
reverse_proxy /app/* localhost:3002
redir /old-path /new-path 301
}

3. WebSocket 支持

Caddy 支持 WebSocket 代理。你只需像普通的 HTTP 请求一样配置。

1
2
3
4
5
6
7
example.com {
reverse_proxy /ws/* localhost:3000 {
header_up X-Real-IP {remote}
header_up X-Forwarded-For {remote}
header_up X-Forwarded-Proto {scheme}
}
}

4. SSL/TLS 配置

Caddy 默认启用 HTTPS。如果你需要自定义 SSL/TLS 设置,可以在 Caddyfile 中进行配置。

1
2
3
4
5
6
7
example.com {
reverse_proxy localhost:3000
tls {
cert_file /path/to/cert.pem
key_file /path/to/key.pem
}
}

5. 基于路径的反向代理

你可以根据请求的路径将请求代理到不同的服务。

1
2
3
4
example.com {
reverse_proxy /service1/* localhost:3001
reverse_proxy /service2/* localhost:3002
}

6. 自定义错误页面

你可以配置自定义错误页面。

1
2
3
4
5
6
example.com {
reverse_proxy localhost:3000
handle_errors {
respond 404 "Sorry, the page was not found" 404
}
}

7. 添加 HTTP 头

你可以在反向代理请求中添加或修改 HTTP 头。

1
2
3
4
5
6
example.com {
reverse_proxy localhost:3000 {
header_up X-Forwarded-For {remote}
header_up X-Real-IP {remote}
}
}

8. 使用插件

Caddy 有许多插件可以扩展其功能,比如身份验证、速率限制等。你可以根据需要安装这些插件并在 Caddyfile 中配置。

9. 设置速率限制

你可以对请求设置速率限制,以防止滥用。

1
2
3
4
5
6
example.com {
reverse_proxy localhost:3000
rate_limit {
zone rate_limit 10r/s
}
}

10. 访问日志和错误日志

你可以启用访问日志和错误日志来监控请求和错误。

1
2
3
4
5
6
7
8
9
10
example.com {
reverse_proxy localhost:3000
log {
output file /var/log/caddy/access.log
format json
}
log {
output file /var/log/caddy/error.log
}
}

11.真实ip

  • header_up:用于将请求头信息添加到代理请求中。
  • X-Real-IP:直接传递客户端的 IP 地址。
  • X-Forwarded-For:包含客户端的 IP 地址链,允许后端识别原始客户端 IP。
  • X-Forwarded-Proto:指示原始请求的协议(HTTP 或 HTTPS)
1
2
3
4
5
6
7
example.com {
reverse_proxy localhost:3000 {
header_up X-Real-IP {remote}
header_up X-Forwarded-For {remote}
header_up X-Forwarded-Proto {scheme}
}
}

本文转自这里

文章目录
  1. 1. 官方安装文档
  2. 2. 简介
  3. 3. 适用场景
  4. 4. 安装
  5. 5. 配置文件路径
  6. 6. 服务管理
  7. 7. 配置示例
  8. 8. 更多配置
    1. 8.1. 1. 负载均衡
    2. 8.2. 2. 路由和重定向
    3. 8.3. 3. WebSocket 支持
    4. 8.4. 4. SSL/TLS 配置
    5. 8.5. 5. 基于路径的反向代理
    6. 8.6. 6. 自定义错误页面
    7. 8.7. 7. 添加 HTTP 头
    8. 8.8. 8. 使用插件
    9. 8.9. 9. 设置速率限制
    10. 8.10. 10. 访问日志和错误日志
    11. 8.11. 11.真实ip