跳到主要内容

命令行参数 & 配置文件(静态配置)

Aidy Gateway 的配置包括「静态配置」与「动态配置」。其中,静态配置指的是在启动时读取并使用的配置,通过命令行或配置文件指定、不会热更新,用于指定程序的监听地址、管理端口、Dashboard、动态配置源以及部分全局插件(Log/Guard)配置等;而动态配置指的是从某一动态配置源进行读取的配置,会自动监听配置源并执行热更新,通常用于指定路由相关的配置及部分适合热更新的全局配置。

本文档介绍的是静态配置,动态配置请参考 动态配置 文档。

静态配置来源于命令行参数与配置文件。可通过 -c--config 指定配置文件,配置文件格式为 TOML。当同一配置在命令行与配置文件中同时指定时,命令行参数优先生效。

命令行参数

  • -c, --config: 启动配置文件(TOML)(必须显式指定)
  • -l, --listen: 网关监听地址(默认 :12580
  • --data-dir: 数据目录(默认 /data/aidy/gateway
  • --management-listen: Management API 监听地址(默认 :12581
  • --config-source: 动态配置来源(file | redis
  • --config-file: 当来源为 file 时,指定动态配置文件路径
  • --config-redis: 当来源为 redis 时,指定 redis 地址(redis://host:port/db[?key=keyname],默认 key: aidy-gateway-config
  • --enable-redis-v2: 是否启用 Redis V2(默认 false),开启此项必须指定 --config-redis
  • --config-debounce: 配置更新 debounce(Go time.Duration,如 "500ms""5s",默认 5s)
  • --enable-dashboard: 是否启用 Dashboard(默认 false),开启此项必须指定 --dashboard-data-source-type
  • --dashboard-data-source-type: Dashboard 数据源类型(当启用时必填,当前仅支持 openobserve,必须指定 --openobserve-url
  • --openobserve-url: OpenObserve URL(如 http://localhost:5080/api/{namespace}/{stream}
  • --openobserve-username: OpenObserve 基本认证用户名
  • --openobserve-password: OpenObserve 基本认证密码
  • --enable-log: 启用请求日志插件(默认 false)
  • --log-unknown-routes: 记录未知路由日志(默认 false)
  • --log-unauthenticated-routes: 记录未授权路由日志(默认 false)
  • --log-hide-sensitive-data: 是否隐藏日志中的敏感信息(默认 true)
  • --log-remote-addr-source: 远程地址来源(connecting_ip | header | xff,默认 connecting_ip
  • --log-remote-addr-header: 当 log-remote-addr-source=header 时,取哪个 Header 的值
  • --log-remote-addr-xff: 当 log-remote-addr-source=xff 时,取第几个 IP(正数从左、负数从右)
  • --log-destination: 日志目的地(httpkafka
  • --log-http-method: HTTP 上报方法(例如 POST
  • --log-http-url: HTTP 上报地址
  • --log-http-basic-username: HTTP 基本认证用户名
  • --log-http-basic-password: HTTP 基本认证密码
  • --log-kafka-brokers: Kafka broker 列表(逗号分隔)
  • --log-kafka-topic: Kafka 目标 topic
  • --log-kafka-tls-enable: Kafka 是否启用 TLS
  • --log-kafka-tls-ca: Kafka TLS CA 证书路径
  • --log-kafka-tls-cert: Kafka TLS 客户端证书路径
  • --log-kafka-tls-key: Kafka TLS 客户端私钥路径
  • --log-kafka-tls-insecure-skip-verify: Kafka TLS 跳过证书校验
  • --enable-guard: 启用 Guard 插件(默认 false)
  • --guard-check-service-url: Guard 检测服务地址
  • --guard-timeout-ms: Guard 超时时间(毫秒)

说明:当未显式设置 --config-source 时,若仅提供了 --config-file--config-redis(或在配置文件中只配置了其一),会自动推断来源;若两者同时提供或均未提供,将报错。

配置文件

listen = ":12580"
data_dir = "/data/aidy/gateway"

[dynamic-config]
source = "file" # or: "redis"
file = "./examples/config/dev.yaml" # 当 source=file 时需要
# redis = "redis://127.0.0.1:6379/0?key=aidy-gateway-config" # 当 source=redis 时需要
# enable_redis_v2 = true # 是否启用 Redis V2
debounce = "5s" # Go time.Duration 格式

[management-server]
listen = ":12581"
[management-server.dashboard]
enable = true
data_source_type = "openobserve"
[management-server.openobserve]
url = "http://localhost:5080/api/default/aidy_gateway"
username = "user"
password = "pass"
[plugins.log]
enable = true
log_unknown_routes = true
log_unauthenticated_routes = true
hide_sensitive_data = true # 默认 true;如需在日志中显示密钥可设为 false
destination = "http" # or kafka
[plugins.log.http]
method = "POST"
url = "https://example.com/ingest"
[plugins.log.http.basic_auth]
username = "user"
password = "pass"
[plugins.log.remote_addr]
source = "connecting_ip" # or header or xff
header = "X-Real-IP" # 当 source=header 时取哪个 Header 的值
xff = 1 # 当 source=xff 时取第几个 IP

#[plugins.log.kafka]
#brokers = ["127.0.0.1:9092", "127.0.0.1:9093"]
#topic = "aidy-logs"
# [plugins.log.kafka.tls]
# enable = false
# # ca_file_path = "/path/to/ca.pem"
# # cert_file_path = "/path/to/client.pem"
# # key_file_path = "/path/to/client.key"
# # insecure_skip_verify = false

[plugins.guard]
enable = true
check_service_url = "http://localhost:8999/check"
timeout_ms = 30000