网关
反向代理路由、SSL 和自定义域名
网关
网关是 Senate 的反向代理层,由 Caddy 提供支持。它处理路由、自动 HTTPS、负载均衡和自定义域名。
概述
每台服务器运行自己的网关实例:
- 将流量路由到该服务器上的服务
- 自动管理 SSL 证书
- 提供健康检查
- 处理 HTTP/2 和 WebSocket 连接
架构
互联网 → 网关 (Caddy) → 服务容器
↓
自动 SSL
路由匹配
健康检查查看网关状态
- 进入 Machines
- 点击一台服务器
- 选择 Gateway 标签页
你将看到:
- 网关运行状态
- 配置的路由
- SSL 证书状态
- 上游健康状况
路由
路由定义传入请求如何到达你的服务。
自动路由
当你为服务添加域名时,Senate 自动创建路由:
| 域名 | 目标 | SSL |
|---|---|---|
app.example.com | myapp-xxx:3000 | 自动 |
负载均衡
负载均衡
当服务有多个实例时:
域名 → 网关 → 轮询 → 容器 1
→ 容器 2
→ 容器 3负载均衡策略
- 轮询(默认):均匀分配
- 最少连接:路由到最空闲的(即将推出)
- IP 哈希:按客户端 IP 的会话粘性(即将推出)
自定义网关配置
通过 UI
对于高级路由需求:
- Machine → Gateway 标签页
- 点击 Add Route
- 配置自定义路由
自定义路由
添加不绑定服务的路由:
| 用例 | 配置 |
|---|---|
| 静态重定向 | example.com → www.example.com |
| 路径路由 | /api/* → backend,/* → frontend |
| 外部代理 | api.example.com → external-service |
WebSocket 支持
网关自动处理 WebSocket 连接:
- 升级 HTTP → WebSocket
- 连接持久化
- 正确的头部转发
HTTP/2
默认启用:
- 服务器推送支持
- 多路复用连接
- 头部压缩
头部
默认头部
网关添加:
X-Forwarded-For:客户端 IPX-Forwarded-Proto:http/httpsX-Real-IP:原始客户端 IP
故障排除
路由不工作
- 检查域名 DNS 指向正确 IP
- 验证服务正在运行
- 检查容器端口匹配路由
- 查看网关日志
502 Bad Gateway
- 服务容器未运行
- 容器端口不匹配
- 容器健康检查失败
- 服务尚未启动
SSL 重定向循环
- 检查服务处理 HTTPS 或设置正确头部
- 确保
X-Forwarded-Proto被正确处理 - 服务应信任代理头部