启动配置
启动配置定义 AISIX 在处理流量前需要的静态设置,覆盖配置存储、监听地址、指标、缓存后端和托管启动模式等进程级事项。
动态资源则不同。模型、调用方 API Key、服务提供方密钥、安全护栏、缓存策略和可观测性导出器会在稍后从配置存储加载。
自托管基线示例
从以下自托管 config.yaml 开始,再根据部署进行调整。该示例明确列出常见监听器、可观测性和限流选择;它是基线,而不是内置默认值列表。
etcd:
endpoints:
- "http://127.0.0.1:2379"
prefix: "/aisix"
dial_timeout_ms: 5000
request_timeout_ms: 5000
proxy:
addr: "0.0.0.0:3000"
request_body_limit_bytes: 10485760
admin:
addr: "127.0.0.1:3001"
admin_keys:
- "YOUR_ADMIN_KEY"
observability:
service_name: "aisix"
log_level: "info"
metrics:
prometheus:
enabled: true
path: "/metrics"
addr: "0.0.0.0:9090"
ratelimit:
backend: "memory"
所有启动字段及其默认值请参阅配置文件。
加载顺序与覆盖
AISIX 按以下顺序加载启动配置:
- 默认值
- 文件内容
- 环境变量覆盖项
环境变量覆盖项以 AISIX_ 开头,并在嵌套配置字段之间使用 __。当容器镜像需要保持同一个配置文件,而部署系统要注入监听地址、凭证或托管模式值时, 这很有用。
使用环境变量设置嵌套启动值:
export AISIX_PROXY__ADDR="0.0.0.0:3000"
选择自托管或托管模式
启动配置决定网关以自托管模式还是托管模式运行。请先做出此选择,再配置管理连接和 Admin 监听器。
只有当网关连接到 AISIX 托管控制面时,才启用托管模式:
managed:
enabled: true
mtls_dir: "/var/lib/aisix/mtls"
dp_id_file: "/var/lib/aisix/dp_id"
当 managed.enabled = true 时,Admin API 不会绑定,本地 playground 端点不会暴露,动态资源会通过托管配置路径读取。托管引导使用可以以内联 PEM 值或挂载文件路径提供的证书包。
当需要通过 :3001 进行本地控制时,请使用自托管启动配置。当网关不应暴露本地 Admin 写 API 时,请使用托管启动配置。
连接运行时依赖
动态资源要进入代理路径,AISIX 必须先有配置存储。etcd 块告诉 AISIX 启动后从哪里读取这些资源。
大多数自托管部署会让 AISIX 指向一个 etcd 端点,并保持稳定前缀,使所有网关资源位于同一个键空间下:
etcd:
endpoints:
- "http://127.0.0.1:2379"
prefix: "/aisix"
dial_timeout_ms: 5000
request_timeout_ms: 5000
只有当部署模型需要环境级标识时才使用 env_id。当配置存储要求 mTLS 时,请添加 etcd.tls。当前配置要求同时提供 CA 证书、客户端证书和客户端密钥。
AISIX 始终会构建进程内内存缓存。当缓存策略需要在多个网关实例之间共享缓存响应时,请添加 Redis:
cache:
redis:
mode: single
url: "redis://127.0.0.1:6379"
匹配的缓存策略会为每个请求选择内存或 Redis。cache.backend 字段为兼容性保留,不再选择全局缓存后端。当 cache.backend 为 redis 时,如果缺少 Redis 块或网关无法连接,启动仍会失败。
Redis Cluster 请使用带 nodes 的 mode: cluster;由 Sentinel 管理的 master 请使用带 sentinels 和 master_name 的 mode: sentinel。
限流计数器默认使用本地内存。当多个网关实例需要共享请求、Token 和并发计数器时,请使用 Redis:
ratelimit:
backend: redis
redis:
mode: single
url: "redis://127.0.0.1:6379"
选择 Redis 后端时,启动配置需要包含 ratelimit.redis 块。使用内存后端时,计数器保存在各自网关进程中。
限流 Redis 后端支持与响应缓存相同的 single、cluster 和 sentinel 连接模式。concurrency_ttl_secs 控制 Redis 后端并发槽位在被回收前可以保留多久。
暴露运行时监听器
AISIX 将调用方流量、自托管管理和指标拆分为不同监听器关注点。
代理监听器是模型流量面向调用方的入口:
proxy:
addr: "0.0.0.0:3000"
request_body_limit_bytes: 10485760
本地开发时,绑定到 loopback 可以保持网关私有。对于容器或入口部署,请绑定到入口层或调用方网络可访问的接口。请求体限制应足够覆盖预期流量,但不要设置得过于随意。
Admin 监听器是自托管部署的管理入口:
admin:
addr: "127.0.0.1:3001"
admin_keys:
- "YOUR_ADMIN_KEY"
请尽量将 Admin 监听器绑定到 loopback 或私有接口。默认地址使用 loopback 临时端口,因此自托管部署应设置显式私有地址。Admin Key 是静态启动配置,不是调用方 API Key 资源。
只有当 AISIX 需要直接终止 HTTPS 时才使用监听器 TLS。只有当 AISIX 位于可信负载均衡器或入口之后,并由其设置转发客户端 IP 请求头时,才配置真实客户端 IP 解析。默认情况下,AISIX 不信任任何转发请求头,而使用直接 TCP 对端。
配置可观测性
启动期可观测性设置控制进程级日志和指标/状态监听器。
为 Prometheus 抓取和运维状态路由配置专用监听器:
observability:
service_name: "aisix"
log_level: "info"
metrics:
prometheus:
enabled: true
path: "/metrics"
addr: "0.0.0.0:9090"
启用 Prometheus 后,同一监听器还会提供 /status/config、/status/ready 和 /status/models。这些路由和已配置指标路径都不需要应用身份认证。请将监听器绑定到私有接口,或限制为仅可信监控系统可访问。
当前版本中,请将 access_log、metrics.otlp 和 tracing.otlp 视为保留或部分支持配置。代理处理器仍会输出结构化访问日志,OTLP 指标尚未接线,启动期 OTLP tracing 不会安装完整导出流水线。
启动期可观测性设置不同于动态可观测性导出器。启动设置控制进程;动态导出器资源控制运行时遥测投递。通过 Admin API 添加动态导出器请参见可观测性导出器。
验证启动配置
更新启动配置后,启动网关并验证代理监听器:
curl -sS "http://127.0.0.1:3000/livez"
自托管模式下,还要验证 Admin 监听器:
curl -sS "http://127.0.0.1:3001/livez"
如果已启用 Prometheus 指标,请通过指标/状态监听器验证 AISIX 已应用有效配置:
curl -i "http://127.0.0.1:9090/status/ready"
使用健康检查在进程、流量、配置和模型状态检查之间进行选择。
然后查询 Admin 健康检查,确认自托管网关已加载模型和配置状态:
AISIX_ADMIN_KEY="YOUR_ADMIN_KEY"
curl -sS "http://127.0.0.1:3001/admin/v1/health" \
-H "Authorization: Bearer ${AISIX_ADMIN_KEY}"
存活端点确认监听器正在运行。Admin 健康检查还会提供已加载的模型状态,以及可用时的配置快照新鲜度。如果进程已启动但模型资源不可见,请先检查 etcd 连接和前缀是否一致。
如果代理监听器可达但 Admin 监听器不可达,请检查是否设置了 managed.enabled = true。托管模式下,Admin API 会有意不绑定。
如果环境变量覆盖项没有生效,请确认 AISIX_ 前缀和嵌套字段 __ 分隔符。
下一步
你已经了解启动设置如何启动网关进程和监听器。接下来阅读配置传播,了解运行时更新时序。