用Nginx轻松搞定网站负载均衡配置

家里Wi-Fi连着三台设备同时看视频,路由器一卡,全家都急。类似的情况也常出现在网站访问中——用户一多,服务器扛不住,网页打不开。这时候,就像给家里的网络加个“分流器”,把流量合理分摊到多个服务器上,Nginx就是这个“分流器”的好帮手。

什么是Nginx做负载均衡

Nginx不只能当Web服务器,还能当“交通指挥员”,把用户的请求分发到后端不同的服务器上。比如你开了三个一样的网站服务,Nginx可以根据策略轮流分配访问,避免某一台服务器累趴下。

最简单的配置方式

假设你有两台内部服务器,IP分别是192.168.1.10和192.168.1.11,都跑着同一个网站。在Nginx的配置文件里(通常是nginx.conf),加上这几行就行:

upstream backend {
    server 192.168.1.10;
    server 192.168.1.11;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

这样,所有访问你域名的请求,就会被自动轮流转发到这两台机器上,谁空闲就找谁。

几种常用的分发策略

默认是轮询,每台服务器轮流来一次。如果你某台服务器配置高,能扛更多压力,可以加权重:

upstream backend {
    server 192.168.1.10 weight=3;
    server 192.168.1.11 weight=1;
}

这表示前三次请求发给第一台,第四次才给第二台,相当于“强的多干点”。

还有按用户IP分配的,叫ip_hash。同一个用户每次都会被分到同一台服务器,适合需要登录状态的网站:

upstream backend {
    ip_hash;
    server 192.168.1.10;
    server 192.168.1.11;
}

加个健康检查更安心

万一其中一台服务器挂了,Nginx默认会等几秒才切走,用户体验就差了。可以加上超时和重试设置:

upstream backend {
    server 192.168.1.10 max_fails=2 fail_timeout=10s;
    server 192.168.1.11 max_fails=2 fail_timeout=10s;
}

意思是连续两次失败就暂时不用这台,10秒后再试,像自动避坑。

改完配置别忘了重启或重载Nginx:sudo nginx -s reload,让新规则生效。

小站点也能用这套逻辑,比如用Docker跑多个服务实例,再用Nginx统一对外,既稳定又省成本。就跟家里路由器分网一样,合理调度,大家都不卡。