1. 程式人生 > >nginix簡單反向代理實現負載均衡配置

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