Senate

网关

反向代理路由、SSL 和自定义域名

网关

网关是 Senate 的反向代理层,由 Caddy 提供支持。它处理路由、自动 HTTPS、负载均衡和自定义域名。

概述

每台服务器运行自己的网关实例:

  • 将流量路由到该服务器上的服务
  • 自动管理 SSL 证书
  • 提供健康检查
  • 处理 HTTP/2 和 WebSocket 连接

架构

互联网 → 网关 (Caddy) → 服务容器

         自动 SSL
         路由匹配
         健康检查

查看网关状态

  1. 进入 Machines
  2. 点击一台服务器
  3. 选择 Gateway 标签页

你将看到:

  • 网关运行状态
  • 配置的路由
  • SSL 证书状态
  • 上游健康状况

路由

路由定义传入请求如何到达你的服务。

自动路由

当你为服务添加域名时,Senate 自动创建路由:

域名目标SSL
app.example.commyapp-xxx:3000自动

负载均衡

负载均衡

当服务有多个实例时:

域名 → 网关 → 轮询 → 容器 1
                   → 容器 2
                   → 容器 3

负载均衡策略

  • 轮询(默认):均匀分配
  • 最少连接:路由到最空闲的(即将推出)
  • IP 哈希:按客户端 IP 的会话粘性(即将推出)

自定义网关配置

通过 UI

对于高级路由需求:

  1. Machine → Gateway 标签页
  2. 点击 Add Route
  3. 配置自定义路由

自定义路由

添加不绑定服务的路由:

用例配置
静态重定向example.com → www.example.com
路径路由/api/* → backend/* → frontend
外部代理api.example.com → external-service

WebSocket 支持

网关自动处理 WebSocket 连接:

  • 升级 HTTP → WebSocket
  • 连接持久化
  • 正确的头部转发

HTTP/2

默认启用:

  • 服务器推送支持
  • 多路复用连接
  • 头部压缩

头部

默认头部

网关添加:

  • X-Forwarded-For:客户端 IP
  • X-Forwarded-Proto:http/https
  • X-Real-IP:原始客户端 IP

故障排除

路由不工作

  1. 检查域名 DNS 指向正确 IP
  2. 验证服务正在运行
  3. 检查容器端口匹配路由
  4. 查看网关日志

502 Bad Gateway

  1. 服务容器未运行
  2. 容器端口不匹配
  3. 容器健康检查失败
  4. 服务尚未启动

SSL 重定向循环

  1. 检查服务处理 HTTPS 或设置正确头部
  2. 确保 X-Forwarded-Proto 被正确处理
  3. 服务应信任代理头部

相关内容

目录