Nginx是一个高性能的HTTP和反向代理服务器,可以轻松实现负载均衡功能。以下是配置Nginx作为反向代理负载均衡器的详细步骤。
确保已安装Nginx,如果没有安装可以使用以下命令:
# Ubuntu/Debian
sudo apt update
sudo apt install nginx
# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
在Nginx配置文件中(通常在/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
),添加upstream
模块定义后端服务器组:
http {
upstream backend {
# 定义后端服务器列表
server backend1.example.com weight=5;
server backend2.example.com;
server backend3.example.com;
server backup.example.com backup;
}
# 其他配置...
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://backend; # 这里的backend对应upstream名称
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Nginx支持多种负载均衡算法:
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com weight=2;
}
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}
upstream backend {
server backend1.example.com max_fails=3 fail_timeout=30s;
server backend2.example.com max_fails=3 fail_timeout=30s;
}
upstream backend {
server backend1.example.com;
server backend2.example.com;
keepalive 32;
}
upstream backend {
server backend1.example.com:443;
server backend2.example.com:443;
}
server {
location / {
proxy_pass https://backend;
proxy_ssl_verify on;
proxy_ssl_trusted_certificate /path/to/ca.crt;
}
}
http {
upstream backend {
least_conn;
server 192.168.1.100:8080 weight=3 max_fails=2 fail_timeout=30s;
server 192.168.1.101:8080 weight=2 max_fails=2 fail_timeout=30s;
server 192.168.1.102:8080 backup;
keepalive 32;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
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-Proto $scheme;
# 超时设置
proxy_connect_timeout 5s;
proxy_read_timeout 60s;
proxy_send_timeout 30s;
}
}
}
sudo nginx -t
sudo systemctl reload nginx
# 或
sudo service nginx reload
server {
listen 8080;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
- worker_processes
: 设置为CPU核心数
- worker_connections
: 每个worker的最大连接数
- keepalive_timeout
: 保持连接的超时时间
通过以上配置,您可以实现一个高性能的Nginx反向代理负载均衡系统,根据实际需求调整负载均衡策略和参数。