lolly/docs/config/basic/reverse-proxy.conf
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

124 lines
3.6 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================================
# Nginx 反向代理基础配置示例
# ============================================================
#
# 功能说明:
# - 反向代理到后端服务
# - 请求头修改X-Real-IP, X-Forwarded-For 等)
# - 超时控制
# - 后端健康检查
#
# Lolly 对应配置:
# server:
# proxy:
# - path: "/api"
# targets:
# - url: "http://backend1:8080"
# weight: 3
# - url: "http://backend2:8080"
# weight: 1
# load_balance: "round_robin"
# timeout:
# connect: 5s
# read: 30s
# write: 30s
# headers:
# set_request:
# X-Real-IP: "$remote_addr"
# X-Forwarded-For: "$proxy_add_x_forwarded_for"
# X-Forwarded-Host: "$host"
# X-Forwarded-Proto: "$scheme"
# set_response:
# X-Server: "lolly"
# remove: ["X-Powered-By"]
# ============================================================
# 后端服务器组定义
# Lolly 对应: targets 列表load_balance 指定算法
upstream backend {
# 负载均衡算法(默认轮询)
# 其他选项:
# least_conn; # 最少连接 - Lolly: least_conn
# ip_hash; # IP 哈希 - Lolly: ip_hash
# hash $request_uri consistent; # 一致性哈希 - Lolly: consistent_hash
server backend1:8080 weight=3;
server backend2:8080 weight=1;
server backend3:8080 backup; # 备用服务器
# 健康检查(需要 nginx Plus 或第三方模块)
# Lolly 对应: health_check 配置
# health_check interval=10s fails=3 passes=2 uri=/health;
# 连接保持
keepalive 32; # 保持 32 个空闲连接
}
server {
listen 80;
server_name proxy.example.com;
# 客户端请求体大小限制
# Lolly 对应: client_max_body_size: "50MB"
client_max_body_size 50m;
client_body_buffer_size 128k;
# 代理缓冲配置
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 32k;
proxy_busy_buffers_size 64k;
# API 代理
location /api {
proxy_pass http://backend;
# 请求头设置
# Lolly 对应: headers.set_request
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Request-ID $request_id;
# 响应头设置
# Lolly 对应: headers.set_response
add_header X-Server nginx always;
# 移除响应头
# Lolly 对应: headers.remove
proxy_hide_header X-Powered-By;
# 超时配置
# Lolly 对应: timeout 配置
proxy_connect_timeout 5s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
# 下游服务器故障转移
# 当后端返回 502/503/504 时重试下一个
# Lolly 对应: next_upstream 配置
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_next_upstream_tries 3;
proxy_next_upstream_timeout 30s;
# HTTP 版本
proxy_http_version 1.1;
proxy_set_header Connection "";
}
# WebSocket 代理示例
# Lolly 支持 WebSocket 代理
location /ws {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
# WebSocket 长连接超时
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}