Nginx的upstream反向代理、負載均衡詳解


 

這篇文章的前提是已經配置好了NGINX,而且tomcat已經配置好了,而且能能夠訪問了。


 

  • 說反向代理之前,我們先看看正向代理,正向代理也是大家最常接觸的到的代理模式。

正向代理最大的特點是客戶端非常明確要訪問的服務器地址;服務器只清楚請求來自哪個代理服務器,而不清楚來自哪個具體的客戶端;正向代理模式屏蔽或者隱藏了真實客戶端信息。

客戶端必須設置正向代理服務器,當然前提是要知道正向代理服務器的IP地址,還有代理程序的端口。如圖。

總結來說:正向代理,"它代理的是客戶端",是一個位於客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求並指定目標(原始服務器),然后代理向原始服務器轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。

正向代理的用途:
(1)訪問原來無法訪問的資源,如Google
(2) 可以做緩存,加速訪問資源
(3)對客戶端訪問授權,上網進行認證
(4)代理可以記錄用戶訪問記錄(上網行為管理),對外隱藏用戶信息

  • 明白了什么是正向代理,我們繼續看關於反向代理的處理方式。

多個客戶端給業務服務器發送的請求,Nginx代理服務器接收到之后,按照一定的規則(負載均衡)分發給了后端的業務處理服務器進行處理了。此時請求的來源也就是客戶端是明確的,但是請求具體由哪台服務器處理的並不明確了(反向代理),Nginx扮演的就是一個反向代理角色。

客戶端是無感知代理的存在的,反向代理對外都是透明的,訪問者並不知道自己訪問的是一個代理。因為客戶端不需要任何配置就可以訪問。

反向代理,"它代理的是服務端",主要用於服務器集群分布式部署的情況下,反向代理隱藏了服務器的信息。

反向代理的作用:
(1)保證內網的安全,通常將反向代理作為公網訪問地址,Web服務器是內網
(2)負載均衡,通過反向代理服務器來優化網站的負載


 

  • 反向代理和負載均衡具體配置:

這里介紹一台服務器(192.168.83.130),代理兩個本機的tomcat(端口分別為:8080、8081),下面是安裝后情況:

nginx目錄:

tomcat目錄:

首先在兩個tomcat的/conf/server.xml里面分別配置端口如下:

分別重啟待用。

然后在nginx的/conf/nginx.conf下設置如下:

(1)實現反向代理使用如下簡單配置:

(2)實現負載均衡使用如下配置:

 upstream server_tomcat{ ip_hash; server 10.1.14.228:8080 weight=8; server 10.1.14.228:80   weight=2; }
    server {
        listen       8887;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            proxy_pass http://server_tomcat;
 proxy_set_header Host $host:$server_port;
            index  index.html index.htm;
        }

 

 

設置完成后重啟nginx。

 瀏覽器輸入主機ip:http://192.168.83.130/,顯示如下:

 

注意 這里的proxy_set_header Host $host;一定要設置,否則無法使用upstream反向代理。報錯如下(400錯誤):

 

 一個主機(192.168.83.130)代理另一台主機(192.168.83.128)上的tomcat類似,只要將 upstream里的ip換掉就行了。

 upstream server_tomcat{
         ip_hash;
        server 192.168.83.130:8081 weight=2;
        server 192.168.83.128:8080 weight=8;
    }

 

 注:

nginx 反向代理時丟失端口的解決方案

原因:nginx沒有正確的把端口信息傳送到后端,沒能正確的配置nginx,下面這行是關鍵
                 proxy_set_header Host $host:$server_port; 這一行是關鍵。

 

 

參考:配置 、配置2配置報400 參考 丟失端口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM