lolly/docs/config/README.md
xfy 6543422281 docs: 添加 Nginx 配置和 Lua 脚本示例文档
- config: 反向代理、缓存、负载均衡、安全、SSL 等配置模板
- lua: API 网关、认证、动态路由、限流、WebSocket 等脚本示例

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:59:22 +08:00

140 lines
5.4 KiB
Markdown

# Nginx 配置示例
本目录包含 nginx 常用配置示例,用于展示 lolly 需要兼容的功能特性。
## 目录结构
```
docs/config/
├── README.md # 本说明文件
├── basic/ # 基础配置
│ ├── static-server.conf # 静态文件服务器
│ ├── reverse-proxy.conf # 反向代理基础配置
│ └── virtual-host.conf # 虚拟主机配置
├── ssl/ # SSL/TLS 配置
│ ├── basic-ssl.conf # 基础 HTTPS 配置
│ ├── mtls.conf # 双向 TLS 认证
│ ├── ocsp-stapling.conf # OCSP Stapling 配置
│ └── hsts.conf # HSTS 安全配置
├── load-balancing/ # 负载均衡配置
│ ├── round-robin.conf # 轮询负载均衡
│ ├── weighted.conf # 加权负载均衡
│ ├── least-conn.conf # 最少连接负载均衡
│ ├── ip-hash.conf # IP 哈希会话保持
│ └── consistent-hash.conf # 一致性哈希
├── advanced/ # 高级功能配置
│ ├── websocket.conf # WebSocket 代理
│ ├── grpc.conf # gRPC 代理
│ ├── http2.conf # HTTP/2 配置
│ ├── http3.conf # HTTP/3 (QUIC) 配置
│ ├── stream-tcp.conf # TCP Stream 代理
│ └── stream-udp.conf # UDP Stream 代理
├── security/ # 安全配置
│ ├── rate-limit.conf # 请求速率限制
│ ├── conn-limit.conf # 连接数限制
│ ├── access-control.conf # IP 访问控制
│ ├── basic-auth.conf # Basic 认证
│ ├── security-headers.conf # 安全响应头
│ └── auth-request.conf # 外部认证子请求
├── caching/ # 缓存配置
│ ├── proxy-cache.conf # 代理响应缓存
│ ├── gzip.conf # Gzip 压缩
│ └── brotli.conf # Brotli 压缩
├── rewriting/ # URL 重写配置
│ ├── rewrite-rules.conf # URL 重写规则
│ ├── redirect.conf # 重定向配置
└── lua/ # Lua 脚本配置
├── basic-lua.conf # 基础 Lua 使用
├── access-by-lua.conf # access_by_lua 认证
├── content-by-lua.conf # content_by_lua 内容生成
├── balancer-by-lua.conf # balancer_by_lua 动态负载均衡
└── shared-dict.conf # lua_shared_dict 共享字典
```
## 配置对照说明
每个 nginx 配置文件都配有对应的 lolly YAML 配置注释,说明 lolly 如何实现相同功能。
## 使用目的
1. **功能对照**: 明确 nginx 配置指令与 lolly 配置项的对应关系
2. **兼容性测试**: 用于验证 lolly 实现的功能是否符合预期
3. **迁移参考**: 帮助用户从 nginx 配置迁移到 lolly 配置
## 配置来源
基于 nginx 官方文档和最佳实践整理,参考:
- nginx 官方文档: https://nginx.org/en/docs/
- OpenResty 文档: https://openresty.org/
## 功能对照表
### 负载均衡
| nginx 指令 | Lolly 配置 |
|-----------|-----------|
| `upstream { server ...; }` | `proxy.targets` 列表 |
| `weight=N` | `targets[].weight: N` |
| `least_conn;` | `load_balance: "least_conn"` |
| `ip_hash;` | `load_balance: "ip_hash"` |
| `hash $key consistent;` | `load_balance: "consistent_hash"` |
### SSL/TLS
| nginx 指令 | Lolly 配置 |
|-----------|-----------|
| `ssl_certificate` | `ssl.cert` |
| `ssl_certificate_key` | `ssl.key` |
| `ssl_protocols` | `ssl.protocols` |
| `ssl_ciphers` | `ssl.ciphers` |
| `ssl_stapling on` | `ssl.ocsp_stapling: true` |
| `add_header Strict-Transport-Security` | `ssl.hsts` |
| `ssl_verify_client` | `ssl.client_verify.mode` |
| `ssl_client_certificate` | `ssl.client_verify.client_ca` |
### 安全
| nginx 指令 | Lolly 配置 |
|-----------|-----------|
| `limit_req zone` | `security.rate_limit.request_rate` |
| `limit_conn zone` | `security.rate_limit.conn_limit` |
| `allow/deny` | `security.access.allow/deny` |
| `auth_basic` | `security.auth.type: "basic"` |
| `auth_request` | `security.auth_request.enabled: true` |
| `add_header X-Frame-Options` | `security.headers.x_frame_options` |
### 代理
| nginx 指令 | Lolly 配置 |
|-----------|-----------|
| `proxy_pass` | `proxy[].targets[].url` |
| `proxy_set_header` | `proxy[].headers.set_request` |
| `proxy_cache` | `proxy[].cache.enabled` |
| `proxy_next_upstream` | `proxy[].next_upstream` |
| `grpc_pass` | HTTP/2 + gRPC 协议支持 |
### 压缩
| nginx 指令 | Lolly 配置 |
|-----------|-----------|
| `gzip on` | `compression.type: "gzip"` |
| `gzip_comp_level` | `compression.level` |
| `gzip_types` | `compression.types` |
| `gzip_static on` | `compression.gzip_static` |
| `brotli on` | `compression.type: "brotli"` |
### 高级功能
| nginx 功能 | Lolly 支持 |
|-----------|-----------|
| WebSocket 代理 | ✓ 自动协议升级 |
| HTTP/2 | ✓ `ssl.http2.enabled` |
| HTTP/3 (QUIC) | ✓ `http3.enabled` |
| TCP/UDP Stream | ✓ `stream` 配置 |
| URL 重写 | ✓ `rewrite` 配置 |
| Lua 脚本 | ✓ 内置 Lua 沙箱 |
## 统计
- **配置文件总数**: 33 个
- **覆盖功能**: 负载均衡、SSL/TLS、安全、代理、缓存、重写、Lua 等