nginix简单反向代理实现负载均衡配置

一、nginx负载均衡说明

    nginx仅仅是作为NGINX PROXY反向代理使用的,因为这个反向代理功能表现的效果是负载均衡,和真正的负载均衡还是有区别的。

    负载均衡产品是转发用户的请求包,而nginx反向代理是接收用户的请求然后重新发起请求区请求后面的节点。

    实现nginx负载均衡的组件主要有两个

    

ngx_http_proxy_module         proxy代理模块,用于请求后抛给服务器节点或upstream 服务器池

ngx_http_upstream_module   负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查


二、配置说明:

image.png

使用3台服务器,LB01作为负载均衡器 ,web01和web02作为网页服务器

web01和web02的 主要配置如下

worker_processes  1;



events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_refere"'
                    '"$http_user_agent" "$http_x_forwarded_for"';

    server {
        listen       80;
        server_name  bbs.hbgd.com;
:

        location / {
            root   html/bbs;
            index  index.html index.htm;
        }
        access_log logs/access_bbs.log main;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

       
    }
    server{
        listen 80;
        server_name www.hbgd.com;
        location / {
                root html/www;
                index index.html index.htm;
                }
        access_log logs/access_www.log main;
        }

    

}

说明,这里做了个虚拟主机bbs.hbgd.com 和www.hbgd.com

然后编写index主页文件,如下所示:

image.png

然后检查语法,重启web01和web02的nginx服务

web01和 web02配置hosts文件后,相互测试

image.png


三、配置简单的负载均衡

LB01的配置文件如下所示:

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream www_server_pools { #定义WEB服务器池,包含了两个WEB节点
        server 172.31.208.93:80 weight=1;        #采用权重轮询算法
        server 172.31.208.94:80 weight=1;

    }
    server {                    #此处定义代理的负载均衡域名虚拟主机
        listen       80;
        server_name  www.hbgd.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
        proxy_pass http://www_server_pools;     #访问www.hbgd.com 请求发送给www_server_pools里面的节点
        proxy_set_header Host $host;            #在代理后端服务器发送的httpd请求头中加入host字段信息,用于当后端服务器配置有多个虚拟主机时,可以识别代理
                                                #的时哪个虚拟机主机,这是节点服务器多虚拟主机的关键配置
        proxy_set_header X-Forwarded-For $remote_addr;  #在代理向后端服务器发送的http请求头部中加入X-Forwarde-for字段信息,用于后端服务器程序,日志等接受记录真实用户的ip,
                                                        #而不是代理服务器的IP

        include proxy.conf;                             #包含的配置
        }

        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        
   
}

检查完成成后,重启lb01上的nginx服务


然后再客户端访问www.hbgd.com,bbs.hbgd.com,可以看到每次访问请求都会被分配到不同服务,权重算法生效

image.png

image.png

image.png

image.png



猜你喜欢

转载自blog.51cto.com/11555417/2336004