- config: 反向代理、缓存、负载均衡、安全、SSL 等配置模板 - lua: API 网关、认证、动态路由、限流、WebSocket 等脚本示例 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
124 lines
3.6 KiB
Plaintext
124 lines
3.6 KiB
Plaintext
# ============================================================
|
||
# 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;
|
||
}
|
||
} |