欢迎来到我的博客园

Nginx 负载均衡配置

Nginx有一个主要的功能就是负载均衡,负载均衡可以让Nginx将客户端传过来的请求分配到代理的服务上。

 

首先配置两个虚拟主机,然后分别使用81和82 端口监听。

主配置文件nginx.conf

[root@node1 conf]# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include domains/*;
}

虚拟主机1 v1.ryan.net使用81端口。

[root@node1 domains]# cat v1.ryan.net 
server {
        listen       81;
        server_name  v1.ryan.net;
        location / {
            root   /data/www/v1.ryan.net/;
            index  index.html index.htm;
        }
        error_page   404 403 500 502 503 504  /50x.html;
        location = /50x.html {
            root   /data/www/v1.ryan.net/;
        }
}

虚拟主机2 v2.ryan.net使用82端口。

[root@node1 domains]# cat v2.ryan.net 
server {
        listen       82;
        server_name  v2.ryan.net;
        location / {
            root   /data/www/v2.ryan.net/;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

然后重启nginx服务。

[root@node1 domains]# /usr/pkgs/nginx/sbin/nginx -s reload
[root@node1 domains]# netstat -ntlp |grep nginx
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      18125/nginx: master
tcp        0      0 0.0.0.0:82              0.0.0.0:*               LISTEN      18125/nginx: master

 

然后我们配置加入负载均衡配置。

upstream块,定义一个上游服务器集群,便于反向代理中proxy_pass使用。

server块,配置指定一台上游服务器名字,可以是域名,ip地址端口,UNIX句柄等。

weight 设置向这台上游服务器转发的权重,默认为1.

max_fails 与fail_timeout配合使用,在fail_timeout时间段内,如果上游某个服务器失败次数超过max_fails。则 fail_timeout时间段内,这个服务器不可用,不再对该服务器发送请求。

ip_hash 根据客户端的ip,生成一个hash值,然后将该has值与集群里的服务器进行取模,然后把取模后的结果发到相应的服务器上,这样每个ip都会有自己固定的上游服务器。 ip_hash与 weight不能同时使用。

proxy_pass 反向代理模块,proxy_pass将当前请求反向代理到URL参数指定的服务器上,URL可以是主机名,或IP端口号的形式。也可以是UNIX句柄,也可以说upstream块的名字,

[root@node1 domains]# cat proxy.net 
upstream test_proxy{
#ip_hash; server
192.168.31.100:81 weight=100 max_fails=2 fail_timeout=15; server 192.168.31.100:82 weight=100 max_fails=2 fail_timeout=15; } server{ listen 80; server_name v.ryan.net; location / { proxy_pass http://test_proxy; proxy_set_header Host $host; index index.html index.htm; } }

然后重启nginx服务。

[root@node1 domains]# /usr/pkgs/nginx/sbin/nginx -s reload
[root@node1 domains]# netstat -ntlp |grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      18125/nginx: master
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      18125/nginx: master
tcp        0      0 0.0.0.0:82              0.0.0.0:*               LISTEN      18125/nginx: master

 

然后在自己window电脑上 修改dns解析

 

 

然后访问 v.ryan.net测试负载均衡是否起作用。

访问v.ryan.net可以看到请求分配到v2.ryan.net

 

 刷新v.ryan.net 可以看到请求分配到v1.ryan.net,这样就实现了负载均衡。

 

posted @ 2022-08-05 15:03  panzq  阅读(683)  评论(0编辑  收藏  举报