- config: 反向代理、缓存、负载均衡、安全、SSL 等配置模板 - lua: API 网关、认证、动态路由、限流、WebSocket 等脚本示例 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
72 lines
2.0 KiB
Plaintext
72 lines
2.0 KiB
Plaintext
# ============================================================
|
||
# Nginx 负载均衡 - IP 哈希配置示例
|
||
# ============================================================
|
||
#
|
||
# 功能说明:
|
||
# - 同一客户端 IP 始终路由到同一服务器
|
||
# - 实现会话保持(Session Persistence)
|
||
# - 适用于无状态服务器但有会话需求的场景
|
||
#
|
||
# Lolly 对应配置:
|
||
# server:
|
||
# proxy:
|
||
# - path: "/api"
|
||
# targets:
|
||
# - url: "http://backend1:8080"
|
||
# - url: "http://backend2:8080"
|
||
# - url: "http://backend3:8080"
|
||
# load_balance: "ip_hash"
|
||
# ============================================================
|
||
|
||
upstream backend {
|
||
# IP 哈希算法
|
||
# Lolly 对应: load_balance: "ip_hash"
|
||
|
||
ip_hash;
|
||
|
||
server backend1:8080;
|
||
server backend2:8080;
|
||
server backend3:8080;
|
||
|
||
# 注意: backup 参数在 ip_hash 模式下不生效
|
||
}
|
||
|
||
server {
|
||
listen 80;
|
||
server_name iphash.example.com;
|
||
|
||
location /api {
|
||
proxy_pass http://backend;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
}
|
||
}
|
||
|
||
# IP 哈希算法说明:
|
||
#
|
||
# 1. 工作原理:
|
||
# hash_key = hash(client_ip) % server_count
|
||
# - 使用客户端 IPv4 地址的前三段进行哈希
|
||
# - IPv6 使用整个地址
|
||
# - 保证同一 IP 总是路由到同一服务器
|
||
#
|
||
# 2. 适用场景:
|
||
# - 传统 Session 存储(本地内存 Session)
|
||
# - 无外部 Session 存储(Redis/Memcached)
|
||
# - 本地缓存依赖(文件缓存)
|
||
#
|
||
# 3. 限制:
|
||
# - 服务器增减时哈希重新计算,可能影响所有用户
|
||
# - 不适合动态伸缩场景
|
||
# - 权重参数不生效
|
||
# - backup 不生效
|
||
#
|
||
# 4. 替代方案:
|
||
# - 使用一致哈希(consistent_hash)
|
||
# - 使用外部 Session 存储(Redis)
|
||
# - 使用 sticky cookie 模块
|
||
#
|
||
# 5. 注意事项:
|
||
# - 在负载均衡器后需要获取真实 IP
|
||
# - 配合 X-Forwarded-For 头部使用
|
||
# - 大量相同 IP(代理用户)可能导致不平衡 |