反向代理&负载均衡
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;
}
}
biubiu