Nginx系列(十三. nginx负载均衡)

本文详细介绍了Nginx负载均衡的配置方法,包括基本的负载均衡设置、多种负载均衡算法如轮询、权重分配、IP哈希等,并解释了相关配置指令的作用及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.负载均衡配置

# 负载均衡
upstream webserver {
    server 192.168.27.134:8080;
    server 192.168.27.135:80;
    server 192.168.27.136:80;
}

# 反向代理
server { 
    listen 80;
    server_name www.test01.com;

    location / {
        proxy_pass http://webserver;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

# web服务器
server {
    listen       8080;
    server_name  www.test01.com;
    access_log  logs/host.access.log  main;

    location / {
        root   /web/www/thinkphp;
        index  index.php index.html index.htm;

        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php/$1 last;
        }
    }

    location ~ [^/]\.php(/|$) {
        root /web/www/thinkphp;
        fastcgi_index index.php;
        fastcgi_pass 127.0.0.1:9000;
        include      fastcgi_params;

        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
    }
}

二. 负载均衡算法

1.轮询 (默认)

upstream webserver {
    server 192.168.27.134:8080;
    server 192.168.27.135:80;
    server 192.168.27.136:80;
}

2.weight

upstream webserver {
    server 192.168.27.134:8080 weight=1;
    server 192.168.27.135:80 weight=2;
    server 192.168.27.136:80 weight=2;
}

3.ip_hash ( 解决session共享问题)

upstream webserver {
    ip_hash;
    server 192.168.27.134:8080;
    server 192.168.27.135:80;
    server 192.168.27.136:80;
}

4.fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。(第三方)

upstream webserver {
    server 192.168.27.134:8080;
    server 192.168.27.135:80;
    server 192.168.27.136:80;
    fair;
}

参考http://wiki.nginx.org/HttpUpstreamFairModule

5.url_hash 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。(第三方)

upstream webserver {
    server 192.168.27.134:8080;
    server 192.168.27.135:80;
    server 192.168.27.136:80;
    hash   $request_uri;
}

参考http://wiki.nginx.org/HttpUpstreamRequestHashModule

6.一致性hash (第三方)
参考http://wiki.nginx.org/HttpUpstreamConsistentHash

三.相关配置

Weight:指定轮询权值,Weight值越大,分配到的访问机率截越高,主要用于后端每个服务器性能不均的情况下。

down:表示当前的server暂时不参与负载均衡,通常和ip_hash一起使用。

backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。

max_fails:在一定时间内(这个时间在fail_timeout参数中设置)检查这个服务器是否可用时产生的最多失败请求数,默认为1。将其设置为0可以关闭检查,这些错误在proxy_next_upstream和fastcgi_next_upstream(404错误不会使max_fails增加)中定义。

fail_timeout:在这个时间内产生了max_fails所设置大小的失败尝试连接请求后这个服务器可能不可用,同样它指定了服务器不可用的时间(在下一次尝试连接请求发起之前),默认为10秒,fail_timeout与前端响应时间没有直接关系,不过可以使用proxy_connect_timeout和proxy_read_timeout来控制。

四.参考资料

http://baidutech.blog.51cto.com/4114344/1033718

http://lobert.iteye.com/blog/1929623

http://blog.youkuaiyun.com/poechant/article/details/7256184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值