Ubuntu 系统上安装 Nginx 并配置负载均衡和主备


Ubuntu 系统上安装 Nginx 并配置负载均衡和主备

Nginx负载均衡

一、安装 Nginx

# 更新软件包索引
sudo apt update

# 安装Nginx
sudo apt install nginx

# 启动Nginx并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx

二、配置负载均衡

编辑 Nginx 主配置文件:

sudo nano /etc/nginx/nginx.conf

http块内添加负载均衡配置(示例配置如下):

http {
    # 负载均衡策略配置
    upstream backend_servers {
        # 轮询策略(默认)
        server 192.168.1.101:80 weight=1 max_fails=3 fail_timeout=30s; # 后端服务器1
        server 192.168.1.102:80 weight=1 max_fails=3 fail_timeout=30s;  # 后端服务器2
        server 192.168.1.103:80 weight=1 max_fails=3 fail_timeout=30s backup;  # 备用服务器3,当1、2访问不了启用
    }

    # 虚拟主机配置
    server {
        listen 80;
        server_name 192.168.1.100;  # 替换为你的域名或IP(负载均衡器)

        location / {
            proxy_pass http://backend_servers;  # 指向负载均衡组
            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;
        }
    }
}

三、常用负载均衡策略

  1. 轮询(默认):按顺序循环分发请求。

  2. 权重(weight)

    :根据服务器性能分配权重,如:

    nginx

    server 192.168.1.101:80 weight=3;  # 处理3倍请求
    server 192.168.1.102:80 weight=1;
    
  3. IP 哈希(ip_hash)

    :相同 IP 的请求始终转发到同一服务器:

    nginx

    upstream backend_servers {
        ip_hash;
        server 192.168.1.101:80;
        server 192.168.1.102:80;
    }
    
  4. 最少连接(least_conn)

    :转发到当前连接数最少的服务器:

    nginx

    upstream backend_servers {
        least_conn;
        server 192.168.1.101:80;
        server 192.168.1.102:80;
    }
    

四、健康检查配置

添加健康检查,自动剔除故障服务器:

nginx

upstream backend_servers {
    server 192.168.1.101:80 max_fails=3 fail_timeout=30s;
    server 192.168.1.102:80 max_fails=3 fail_timeout=30s;
    server 192.168.1.103:80 backup;  # 备份服务器,仅当其他服务器都不可用时启用
}

五、验证与重启

# 验证配置文件语法
sudo nginx -t

# 重启Nginx使配置生效
sudo systemctl restart nginx

六、监控与维护

# 查看Nginx状态
sudo systemctl status nginx

# 查看Nginx访问日志
sudo tail -f /var/log/nginx/access.log

# 查看Nginx错误日志
sudo tail -f /var/log/nginx/error.log

配置完成后,所有发往 Nginx 服务器的请求都会被均衡分发到后端服务器组。根据实际需求,你可以调整负载均衡策略、添加更多后端服务器或配置 HTTPS。

教程