# 自定义配置

URL: https://caijiao.org/pingora/user_defined_configuration
Source: docs/pingora/user_defined_configuration.md
Description: 学习如何在 Pingora 中进行自定义配置，包括代理策略、上游设置、日志、监控和热更新。

Pingora 提供灵活的配置系统，支持用户根据业务需求自定义代理行为、上游策略和服务特性。

## 配置文件结构

Pingora 配置文件通常为 **YAML** 格式：

```yaml
server:
  listen: "0.0.0.0:8080"
  workers: 4

proxy:
  upstreams:
    - name: backend
      servers:
        - "127.0.0.1:8000"
        - "127.0.0.1:8001"
      max_connections: 50
      retry_policy:
        retries: 3
        backoff: 100ms

logging:
  level: info
  output: stdout

ratelimiter:
  enable: true
  requests_per_second: 100
  burst: 20

tls:
  enable: true
  cert: "/etc/ssl/certs/server.crt"
  key: "/etc/ssl/private/server.key"
````

## 配置要点

1. **服务器参数**

   * `listen`：监听地址与端口
   * `workers`：工作线程数量

2. **上游代理（Peer）**

   * 多上游服务器支持负载均衡
   * `max_connections` 控制连接池大小
   * `retry_policy` 设置失败重试策略

3. **日志系统**

   * 支持不同等级（debug, info, warn, error）
   * 可输出到控制台或文件

4. **限速器**

   * 控制请求速率，防止服务过载
   * `requests_per_second` 和 `burst` 可自定义

5. **TLS 配置**

   * 启用 HTTPS
   * 指定证书与私钥路径
   * 可设置最小/最大 TLS 版本

## 动态加载与热更新

* Pingora 支持在运行时重新加载部分配置
* 可通过信号或管理接口触发热更新，减少服务中断

## 自定义扩展

* 过滤器与中间件可以通过配置启用或禁用
* 支持根据不同环境加载不同配置文件
* 可扩展插件实现自定义代理策略或监控指标

---

通过自定义配置，Pingora 可以灵活适配不同业务场景，实现高性能、可扩展和安全的代理服务。
