nginx動態(tài)代理及負載均衡的學習之旅-創(chuàng)新互聯(lián)

成都創(chuàng)新互聯(lián)堅信:善待客戶,將會成為終身客戶。我們能堅持多年,是因為我們一直可值得信賴。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。10多年網(wǎng)站建設經(jīng)驗成都創(chuàng)新互聯(lián)是成都老牌網(wǎng)站營銷服務商,為您提供成都網(wǎng)站建設、做網(wǎng)站、網(wǎng)站設計、成都h5網(wǎng)站建設、網(wǎng)站制作、高端網(wǎng)站設計、重慶小程序開發(fā)服務,給眾多知名企業(yè)提供過好品質(zhì)的建站服務。

下文給大家?guī)韓ginx動態(tài)代理及負載均衡的學習之旅,希望能夠給大家在實際運用中帶來一定的幫助,負載均衡涉及的東西比較多,理論也不多,網(wǎng)上有很多書籍,今天我們就用創(chuàng)新互聯(lián)建站在行業(yè)內(nèi)累計的經(jīng)驗來做一個解答。

1.正向代理與反向代理的區(qū)別?

正向代理:是一個位于客戶端和原始云服務器(origin server)之間的服務器,為了從原始服務器取得內(nèi)容,客戶端向代理發(fā)送一個請求并指定目標(原始服務器),然后代理向原始服務器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端。正向代理的典型用途為在防火墻內(nèi)的局域網(wǎng)客戶端提供訪問Internet的途徑.

nginx動態(tài)代理及負載均衡的學習之旅

反向代理:反向代理是代理服務器的一種,服務器根據(jù)客戶端的請求,從其關聯(lián)的一組或多組后端服務器(如Web服務器)上獲取資源,然后再將這些資源返回給客戶端,客戶端只會得知反向代理的IP地址或者域名,而不知道在代理服務器后面的服務器簇的存在.

nginx動態(tài)代理及負載均衡的學習之旅

2.nginx概述

Nginx是一款優(yōu)秀的反向代理服務器程序,能夠為若干臺服務器提供反向代理服務,一方面為客戶端提供的統(tǒng)一的訪問地址,另一方面為后臺多個服務器提供了負載均衡的能力。Nginx是目前最主流的反向代理服務器,能夠提供可靠的負載均衡、動靜分離的能力。
        a. 下載地址
            http://nginx.org/en/download.html
        b. 安裝
            將下載好的安裝包解壓到一個沒有中文沒有空格的目錄下即可。
        c. windows下常用命令
            驗證配置是否正確: nginx -t
            查看Nginx的版本號:nginx -V
            啟動Nginx:start nginx
            快速停止或關閉Nginx:nginx -s stop
            正常停止或關閉Nginx:nginx -s quit
            配置文件修改重裝載命令:nginx -s reload
        d. 配置
            nginx的工作是基于[conf/nginx.conf]配置文件來進行的。
            nginx.conf的配置結(jié)構:
                http{ #代表處理http請求
                         #配置一個虛擬服務器
                        server{
                                #此虛擬服務器接收對80端口的訪問
                                listen 80; 
                                #此虛擬服務器接收對localhost主機名的訪問
                                server_name localhost; 
                                #當訪問/user資源時由此配置處理
                                location /user{
                                        規(guī)則
                                }
                                #當訪問/order資源時由此配置處理
                                location /order{
                                        規(guī)則
                                }
                                ...
                        }

                        #其他Server配置
                        server ...
                        ...
                }

3.nginx案例實現(xiàn)請求轉(zhuǎn)發(fā)

通過Nginx實現(xiàn)請求轉(zhuǎn)發(fā),通過配置nginx.conf轉(zhuǎn)發(fā)策略,使得本來訪問tomcate:8080端口轉(zhuǎn)交由訪問nginx:8088端口
        當客戶端訪問http://www.aaa.com時,由nginx轉(zhuǎn)發(fā)給http://127.0.0.1:8080端口進行處理
        配置hosts文件
            127.0.0.1 www.aaa.com
        在nginx.conf中配置
            http{
                    #為nginx配置一個虛擬服務器,
                    server {
                            #監(jiān)聽本機8088端口
                            listen 8088;
                            #接收對www.aaa.com主機名的訪問
                            server_name www.aaa.com;
                            #對/即任意路徑的訪問進行處理
                            location / {
                                    #轉(zhuǎn)發(fā)到指定地址,tomcate訪問地址
                                    proxy_pass http://127.0.0.1:8080;
                            } 
                            #可以配置多個location
                            ...
                    }
                    #可以配置多個server
                    ...
            }
        啟動 tomcat
            startup.bat
        啟動nginx
            start nginx

nginx動態(tài)代理及負載均衡的學習之旅

4. location路徑配置和匹配規(guī)則

       a. location路徑的寫法
        在配置虛擬服務器時,可以配置多個location,指定不同路徑采用不同的處理方案,location支持多種寫法,規(guī)則如下:
        1.  =   =/aaa/1.jpg 路徑嚴格匹配,路徑必須一模一樣才會匹配到
        2.  ^~  ^~/aaa  只要是指定路徑開頭的路徑都可以匹配
        3.  ~   ~.png$  區(qū)分大小寫按正則匹配路徑
        4.  ~*  ~*.png$ 不區(qū)分大小寫按正則匹配路徑
        5. /    /   通用匹配,所有路徑都可以匹配到
        b. location路徑配置的優(yōu)先級
        由于location的路徑配置非常靈活,所有有可能一個路徑被多個location所匹配,此時按照如下規(guī)則判斷匹配優(yōu)先級:
            ? 首先匹配 =
            ? 其次匹配 ^~
            ? 其次是按文件中順序的正則匹配
            ? 最后是交給 / 通用匹配
            ? 當有匹配成功時候,停止匹配,按當前匹配規(guī)則處理請求
            ----總的規(guī)律是,精度越高優(yōu)先級越高
        案例:
        location = / {
                     #規(guī)則A
                            }
        location = /login {
                    #規(guī)則B
                            }
        location ^~ /static/ {
                     #規(guī)則C
                            }
        location ~ \.(gif|jpg|png|js|css)$ {
                    #規(guī)則D
                            }
        location ~* \.png$ {
                             #規(guī)則E
                        }
        location / {
                             #規(guī)則F
                        }
     訪問根目錄 /, 比如 http://localhost/ 將匹配規(guī)則 A
     訪問 http://localhost/login 將匹配規(guī)則 B
     http://localhost/register 則匹配規(guī)則 F
     訪問 http://localhost/static/a.html 將匹配規(guī)則 C
     訪問 http://localhost/a.gif, http://localhost/b.jpg 將匹配規(guī)則 D和規(guī)則 E,但是規(guī)則 D 順序優(yōu)先,規(guī)則 E不起作用
     http://localhost/static/c.png則優(yōu)先匹配到規(guī)則 C
     訪問 http://localhost/a.PNG 則匹配規(guī)則 E,而不會匹配規(guī)則 D,因為規(guī)則 E 不區(qū)分大小寫
     訪問 http://localhost/category/id/1111 則最終匹配到規(guī)則 F

5. Ngnix的負載均衡策略

   nginx在分發(fā)資源到后端服務器時,如何分配請求是可以配置的,稱之為nginx的負載均衡策略。
        輪詢  默認不配置就是輪詢   連接請求輪流分配給后端服務器
        http{ 
                            upstream sampleapp { 
                            server <<dns entry or IP Address(optional with port)>>; 
                            server <<another dns entry or IP Address(optional with port)>>; 
                            } 
                            .... 
                            server{ 
                                    listen 80; 
                                    ... 
                                    location / { 
                                            proxy_pass http://sampleapp; 
                            }  
                    } 
        ip哈希    ip_hash;    abs(客戶端ip.hash())%服務器數(shù)量,根據(jù)余數(shù)決定連接請求去往哪個服務器
        http{ 
                            upstream sampleapp { 
                            ip_hash; 
                            server <<dns entry or IP Address(optional with port)>>; 
                            server <<another dns entry or IP Address(optional with port)>>; 
                            } 
                            .... 
                            server{ 
                                    listen 80; 
                                    ... 
                                    location / { 
                                    proxy_pass http://sampleapp; 
                            }  
                    } 
        最少連接    least_conn; 將連接請求分配給目前連接數(shù)最少的服務器
        http{ 
                            upstream sampleapp { 
                            least_conn; 
                            server <<dns entry or IP Address(optional with port)>>; 
                            server <<another dns entry or IP Address(optional with port)>>; 
                            } 
                            .... 
                            server{ 
                                    listen 80; 
                                    ... 
                                    location / { 
                                    proxy_pass http://sampleapp; 
                            }  
                    } 
        基于權重    直接在地址后配置weight=x    根據(jù)權重進行分配,權重值越大,被分配的連接越多??梢灾苯优渲脼閐own,則不再分配連接。    
        http{ 
                            upstream sampleapp { 
                                    server <<dns entry or IP Address(optional with port)>> weight=2; 
                                    server <<another dns entry or IP Address(optional with port)>> weight=5; 
                                    server <<another dns entry or IP Address(optional with port)>> down;
                            } 
                            .... 
                            server{ 
                                    listen 80; 
                                    ... 
                                    location / { 
                                    proxy_pass http://sampleapp; 
                            } 
                    }

 7. Nginx的動靜分離實現(xiàn)

       a. 動靜分離原理
        動 --> 動態(tài)資源  --> servlet jsp --> 程序 
        靜 --> 靜態(tài)資源 --> jpg mp3 mp4 html css js --> 文件 
        tomcat能夠處理動態(tài)和靜態(tài)資源,但本質(zhì)上是為處理動態(tài)資源而設計的服務器,過多靜態(tài)資源交由tomcat管理會降低tomcat處理動態(tài)資源的能力,得不償失。

        nginx本身無法處理動態(tài)資源,但可以處理靜態(tài)資源,而且性能優(yōu)良。

        因此可以將靜態(tài)資源和動態(tài)資源拆分,將靜態(tài)資源交由ngin處理,動態(tài)資源仍由tomcat處理,從而解放了tomcat對動態(tài)資源的處理能力,整體上實現(xiàn)動靜分離,提升了效率。
        b. 動靜分離實現(xiàn)
        配置方式:
            server {
                    listen 8088;
                    server_name www.aaa.com;
                    location / {
                            #root可以指向nginx服務器中的本地磁盤地址
                            #靜態(tài)文件就放置在這個磁盤地址中
                            #之后對server中資源的訪問會被轉(zhuǎn)換到對本地磁盤資源的訪問
                                                #www.aaa.com/aaa/bbb/1.html-->d://html/aaa/bbb/1.html
                            root D://html;
                            #默認訪問的首頁配置
                            index index.html;
                    }

           }

看了以上關于nginx動態(tài)代理及負載均衡的學習之旅,如果大家還有什么地方需要了解的可以在創(chuàng)新互聯(lián)建站行業(yè)資訊里查找自己感興趣的或者找我們的專業(yè)技術工程師解答的,創(chuàng)新互聯(lián)建站技術工程師在行業(yè)內(nèi)擁有十幾年的經(jīng)驗了。


創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。

本文標題:nginx動態(tài)代理及負載均衡的學習之旅-創(chuàng)新互聯(lián)
標題網(wǎng)址:http://muchs.cn/article42/djggec.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)頁設計公司、搜索引擎優(yōu)化、App開發(fā)、全網(wǎng)營銷推廣、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司