配置文件
APISIX 在 /conf 下有以下配置文件:
config.yamlconfig.yaml.exampleapisix.yamldebug.yaml
此外,如果你希望在 文件驱动的独立模式 下使用 JSON,你可以将 apisix.json 放在 /conf 下。
本文档提供了有关如何使用配置文件以及如何按环境管理配置文件的参考。
用法
config.yaml 和 config.yaml.example
APISIX 带有一个配置文件 config.yaml,用于自定义许多参数,包括监听接口、部署模式、插件属性等。
这些参数的默认值可以在 apisix/cli/config.lua 中找到。
你可以在 config.yaml.example 中找到 config.yaml 的示例配置文件:
apisix:
# node_listen: 9080 # APISIX listening port (single)
node_listen: # APISIX listening ports (multiple)
- 9080
# - port: 9081
# enable_http2: true # If not set, the default value is `false`.
# - ip: 127.0.0.2
# port: 9082
# enable_http2: true
enable_admin: true
enable_dev_mode: false
enable_reuseport: true
# ...
config.yaml 中的配置在启动时加载一次。如果你对此文件进行了任何更新,请 重新加载 APISIX 以使更改生效。
选择 AI Gateway HTTP 客户端
AI Proxy、AI Proxy Multi 和 AI Request Rewrite 默认使用 ngx_http_ffi_client 向 LLM 上游发送请求。若已安装的运行时不提供 FFI 客户端模块,或需要使用 Lua 客户端路径,请将共享插件属性设为 lua-resty-http:
plugin_attr:
ai-proxy:
http_client: lua-resty-http
可接受的值为 ngx_http_ffi_client 和 lua-resty-http。未知值会导致插件属性校验失败;在不含 resty.ngx_http_ffi_client 的运行时中选择 ngx_http_ffi_client,会在创建客户端时使 AI 上游请求失败。
规划共享内存
本版本中,多个不可驱逐的共享内存区采用更大的默认值,以降低生产环境指标、服务发现状态和追踪信息耗尽内存区的可能性。这些内存区由所有 Worker 共享,因此不要将配置的大小乘以 Worker 数量。
| 功能或内存区 | 当前默认值 | 之前默认值 |
|---|---|---|
仅 HTTP 的 prometheus-metrics | 128 MiB | 10 MiB |
启用 Stream 插件时的 prometheus-metrics | 128 MiB | 15 MiB |
| HTTP Nacos 服务发现 | 64 MiB | 10 MiB |
| Stream Nacos 服务发现 | 64 MiB | 10 MiB |
Consul 服务发现 shared_size | 64 MiB | 1 MiB |
Kubernetes 服务发现 shared_size | 64 MiB | 1 MiB |
SkyWalking tracing_buffer | 32 MiB | 10 MiB |
某些内存区仅在启用相应插件或服务发现时生成,而运行时级别的 Nacos 内存区会由 APISIX 运行时模板生成。升级内存受限的网关前,请将生成的 NGINX 配置以及已启用的插件和服务发现与容器或主机内存限制进行比较。只有在确认能容纳预期指标基数、服务发现清单或追踪负载后,才保留显式设置的较小值;这些内存区不会驱逐旧条目来腾出空间。
信任转发头
APISIX 会在 Lua 插件运行前,在 NGINX rewrite 阶段清理 X-Forwarded-Proto、X-Forwarded-Host、X-Forwarded-Port 和 RFC 7239 Forwarded 头。仅将 apisix.trusted_addresses 配置为应接受其转发头的负载均衡器地址或网络:
apisix:
trusted_addresses:
- 192.168.1.0/24
- 2001:db8:1234::/48
| 直接对端 | 转发行为 |
|---|---|
| 未配置可信列表 | 保留入站 X-Forwarded-For 链并追加直接对端;以 APISIX 观测到的值替换 Proto、Host 和 Port,并清除 Forwarded。 |
位于 trusted_addresses 中 | 保留入站 X-Forwarded-For 链并追加直接对端;若对端提供了入站 Proto、Host、Port 和 Forwarded,则恢复这些值,否则使用 APISIX 观测到的值。 |
| 不在已配置的可信列表中 | 丢弃入站 X-Forwarded-For 链,使上游只接收直接对端;以观测值替换 Proto、Host 和 Port,并清除 Forwarded。 |
信任一个网络会允许该网络中的任何对端提供这些携带身份信息的值。请将列表限制为你控制的代理。
APISIX 会保留客户端提供的值,以供审计和诊断:
| 上下文 | 已清理或生效的值 | 原始客户端值 |
|---|---|---|
| Lua 插件 | ctx.var.http_x_forwarded_proto、ctx.var.http_x_forwarded_host、ctx.var.http_x_forwarded_port 和 ctx.var.http_x_forwarded_for | ctx.var.original_x_forwarded_proto、ctx.var.original_x_forwarded_host、ctx.var.original_x_forwarded_port、ctx.var.original_x_forwarded_for 和 ctx.var.original_forwarded |
| NGINX 配置 | $scheme、$var_x_forwarded_host 和 $var_x_forwarded_port | $original_x_forwarded_proto、$original_x_forwarded_host、$original_x_forwarded_port、$original_x_forwarded_for 和 $original_forwarded |
Lua 不再公开 ctx.var.var_x_forwarded_proto、ctx.var.var_x_forwarded_host 或 ctx.var.var_x_forwarded_port。NGINX 仍会定义 $var_x_forwarded_host 和 $var_x_forwarded_port;对于已清理的协议,请使用 $scheme。
在 NGINX access-log 格式、if 或 map 中,$http_x_forwarded_proto、$http_x_forwarded_host、$http_x_forwarded_port 和 $http_forwarded 会保留 APISIX 替换头之前缓存的原始客户端值。需要明确已清理或原始语义时,请使用上表中的变量。配置了可信列表时,$http_x_forwarded_for 使用生效值,并会为不受信任的对端清空。
apisix.yaml
在 APISIX 文件驱动的独立部署模式下,apisix.yaml 用于配置 APISIX 资源,例如 路由、上游、消费者 等。
这些配置在启动时由 APISIX 加载到内存中。对此文件的更改不需要重新加载 APISIX,因为会定期监控该文件的更改。
有关如何配置 apisix.yaml 的更多信息,请参阅 文件驱动的独立模式。
apisix.json
apisix.json 是文件驱动的独立部署模式下 apisix.yaml 的 JSON 等效项,用于配置 APISIX 资源。
有关如何配置 apisix.json 的更多信息,请参阅 文件驱动的独立模式。
debug.yaml
你可以使用 debug.yaml 中的配置选项启用和自定义 APISIX 调试模式。
对此文件的更改不需要重新加载 APISIX,因为会定期监控该文件的更改。
要了解更多信息,请参阅 使用调试模式。
按环境管理配置文件
为不同的环境(例如开发、暂存和生产)保持单独的配置文件可以提供多种好处,包括增加灵活性、提高安全性和更易于维护。
APISIX 支持按环境分离配置文件。你可以设置 APISIX_PROFILE 环境变量来区分 APISIX 应使用哪组其他配置文件。
默认情况下,当未设置 APISIX_PROFILE 时,APISIX 查找以下配置文件:
conf/config.yamlconf/apisix.yamlconf/debug.yaml
如果 APISIX_PROFILE 的值设置为 prod,APISIX 将查找以下配置文件:
conf/config-prod.yamlconf/apisix-prod.yamlconf/debug-prod.yaml
你可以将 APISIX_PROFILE 设置为与你的环境匹配的任何其他值。