Skip to content

反向代理&负载均衡

Nginx负责把请求均匀转发到多个后端服务器,影藏真实IP,还能自动剔除挂掉节点

shell
# 全局配置:定义Nginx运行的基本参数
user  nginx;  # 运行用户,默认就行
worker_processes  1;  # 工作进程数,一般设为CPU核心数,摸鱼主机设1也行
# 错误日志和PID文件
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
# 负载均衡配置:定义后端服务器列表
upstream backend_servers {
    # 轮询策略:默认按顺序转发请求
    server 192.168.1.10:8080;  # 后端服务器A
    server 192.168.1.11:8080;  # 后端服务器B
    server 192.168.1.12:8080;  # 后端服务器C
    
    # 进阶配置:健康检查(服务器挂了自动踢掉)
    least_conn;  # 最小连接数策略,哪个服务器空闲就转发给谁
    keepalive 32;  # 保持32个长连接,减少TCP三次握手开销
    proxy_next_upstream error timeout http_500;  # 转发失败时,自动重试下一台服务器
}
# 服务器配置:定义Nginx对外提供服务的端口和规则
server {
    listen       80;  # 监听80端口(HTTP)
    server_name  www.yourdomain.com;  # 域名,改成你的域名或IP
    
    # 反向代理规则:所有以/api/开头的请求转发到后端服务器
    location /api/ {
        proxy_pass http://backend_servers/;  # 转发到upstream定义的服务器组
        
        # 传递客户端真实IP(后端需要获取用户IP时用)
        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_connect_timeout 30s;
        proxy_read_timeout 60s;
        proxy_send_timeout 60s;
    }
}