• 當前位置:聯(lián)升科技 > 技術(shù)資訊 > 開(kāi)發(fā)技術(shù) >

    詳細解析Nginx的功能和應用場(chǎng)景:正代、反向代理、負載、Http——新余網(wǎng)站設計

    2019-11-16    作者:轉載    來(lái)源:網(wǎng)絡(luò )    閱讀: 次
    Nginx能做什么
    1、反向代理
    2、負載均衡
    3、HTTP服務(wù)器(包含動(dòng)靜分離)
    4、正向代理
    以上就是我了解到的Nginx在不依賴(lài)第三方模塊能處理的事情,下面詳細說(shuō)明每種功能怎么做。
    反向代理
    反向代理應該是Nginx做的最多的一件事了,什么是反向代理呢,以下是百度百科的說(shuō)法:反向代理(Reverse Proxy)方式是指以代理服務(wù)器來(lái)接受internet上的連接請求,然后將請求轉發(fā)給內部網(wǎng)絡(luò )上的服務(wù)器,并將從服務(wù)器上得到的結果返回給internet上請求連接的客戶(hù)端,此時(shí)代理服務(wù)器對外就表現為一個(gè)反向代理服務(wù)器。簡(jiǎn)單來(lái)說(shuō)就是真實(shí)的服務(wù)器不能直接被外部網(wǎng)絡(luò )訪(fǎng)問(wèn),所以需要一臺代理服務(wù)器,而代理服務(wù)器能被外部網(wǎng)絡(luò )訪(fǎng)問(wèn)的同時(shí)又跟真實(shí)服務(wù)器在同一個(gè)網(wǎng)絡(luò )環(huán)境,當然也可能是同一臺服務(wù)器,端口不同而已。
    下面貼上一段簡(jiǎn)單的實(shí)現反向代理的代碼
    保存配置文件后啟動(dòng)Nginx,這樣當我們訪(fǎng)問(wèn)localhost的時(shí)候,就相當于訪(fǎng)問(wèn)localhost:8080了。
    負載均衡
    負載均衡也是Nginx常用的一個(gè)功能,負載均衡其意思就是分攤到多個(gè)操作單元上進(jìn)行執行,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)。簡(jiǎn)單而言就是當有2臺或以上服務(wù)器時(shí),根據規則隨機的將請求分發(fā)到指定的服務(wù)器上處理,負載均衡配置一般都需要同時(shí)配置反向代理,通過(guò)反向代理跳轉到負載均衡。而Nginx目前支持自帶3種負載均衡策略,還有2種常用的第三方策略。
    1、RR(默認)
    每個(gè)請求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。
    簡(jiǎn)單配置
    負載均衡的核心代碼為
    這里我配置了2臺服務(wù)器,當然實(shí)際上是一臺,只是端口不一樣而已,而8081的服務(wù)器是不存在的,也就是說(shuō)訪(fǎng)問(wèn)不到,但是我們訪(fǎng)問(wèn)http://localhost 的時(shí)候,也不會(huì )有問(wèn)題,會(huì )默認跳轉到http://localhost:8080 具體是因為Nginx會(huì )自動(dòng)判斷服務(wù)器的狀態(tài),如果服務(wù)器處于不能訪(fǎng)問(wèn)(服務(wù)器掛了),就不會(huì )跳轉到這臺服務(wù)器,所以也避免了一臺服務(wù)器掛了影響使用的情況,由于Nginx默認是RR策略,所以我們不需要其他更多的設置。
    2、權重
    指定輪詢(xún)幾率,weight和訪(fǎng)問(wèn)比率成正比,用于后端服務(wù)器性能不均的情況。
    例如
    那么10次一般只會(huì )有1次會(huì )訪(fǎng)問(wèn)到8081,而有9次會(huì )訪(fǎng)問(wèn)到8080
    3、ip_hash
    上面的2種方式都有一個(gè)問(wèn)題,那就是下一個(gè)請求來(lái)的時(shí)候請求可能分發(fā)到另外一個(gè)服務(wù)器,當我們的程序不是無(wú)狀態(tài)的時(shí)候(采用了session保存數據),這時(shí)候就有一個(gè)很大的很問(wèn)題了,比如把登錄信息保存到了session中,那么跳轉到另外一臺服務(wù)器的時(shí)候就需要重新登錄了,所以很多時(shí)候我們需要一個(gè)客戶(hù)只訪(fǎng)問(wèn)一個(gè)服務(wù)器,那么就需要用ip_hash了,ip_hash的每個(gè)請求按訪(fǎng)問(wèn)ip的hash結果分配,這樣每個(gè)訪(fǎng)客固定訪(fǎng)問(wèn)一個(gè)后端服務(wù)器,可以解決session的問(wèn)題。
    4、fair(第三方)
    按后端服務(wù)器的響應時(shí)間來(lái)分配請求,響應時(shí)間短的優(yōu)先分配。
    5、url_hash(第三方)
    按訪(fǎng)問(wèn)url的hash結果來(lái)分配請求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效。 在upstream中加入hash語(yǔ)句,server語(yǔ)句中不能寫(xiě)入weight等其他的參數,hash_method是使用的hash算法
    以上5種負載均衡各自適用不同情況下使用,所以可以根據實(shí)際情況選擇使用哪種策略模式,不過(guò)fair和url_hash需要安裝第三方模塊才能使用,由于本文主要介紹Nginx能做的事情,所以Nginx安裝第三方模塊不會(huì )再本文介紹
    HTTP服務(wù)器
    Nginx本身也是一個(gè)靜態(tài)資源的服務(wù)器,當只有靜態(tài)資源的時(shí)候,就可以使用Nginx來(lái)做服務(wù)器,同時(shí)現在也很流行動(dòng)靜分離,就可以通過(guò)Nginx來(lái)實(shí)現,首先看看Nginx做靜態(tài)資源服務(wù)器。
    這樣如果訪(fǎng)問(wèn)http://localhost 就會(huì )默認訪(fǎng)問(wèn)到E盤(pán)wwwroot目錄下面的index.html,如果一個(gè)網(wǎng)站只是靜態(tài)頁(yè)面的話(huà),那么就可以通過(guò)這種方式來(lái)實(shí)現部署。
    動(dòng)靜分離
    動(dòng)靜分離是讓動(dòng)態(tài)網(wǎng)站里的動(dòng)態(tài)網(wǎng)頁(yè)根據一定規則把不變的資源和經(jīng)常變的資源區分開(kāi)來(lái),動(dòng)靜資源做好了拆分以后,我們就可以根據靜態(tài)資源的特點(diǎn)將其做緩存操作,這就是網(wǎng)站靜態(tài)化處理的核心思路。
    這樣我們就可以吧HTML以及圖片和css以及js放到wwwroot目錄下,而tomcat只負責處理jsp和請求,例如當我們后綴為gif的時(shí)候,Nginx默認會(huì )從wwwroot獲取到當前請求的動(dòng)態(tài)圖文件返回,當然這里的靜態(tài)文件跟Nginx是同一臺服務(wù)器,我們也可以在另外一臺服務(wù)器,然后通過(guò)反向代理和負載均衡配置過(guò)去就好了,只要搞清楚了最基本的流程,很多配置就很簡(jiǎn)單了,另外localtion后面其實(shí)是一個(gè)正則表達式,所以非常靈活。
    正向代理
    正向代理,意思是一個(gè)位于客戶(hù)端和原始服務(wù)器(origin_server)之間的服務(wù)器,為了從原始服務(wù)器取得內容,客戶(hù)端向代理發(fā)送一個(gè)請求并指定目標(原始服務(wù)器),然后代理向原始服務(wù)器轉交請求并將獲得的內容返回給客戶(hù)端??蛻?hù)端才能使用正向代理。當你需要把你的服務(wù)器作為代理服務(wù)器的時(shí)候,可以用Nginx來(lái)實(shí)現正向代理,但是目前Nginx有一個(gè)問(wèn)題,那么就是不支持HTTPS,雖然我百度到過(guò)配置HTTPS的正向代理,但是到最后發(fā)現還是代理不了,當然可能是我配置的不對,所以也希望有知道正確方法的同志們留言說(shuō)明一下。

    詳細解析Nginx的功能和應用場(chǎng)景:正代、反向代理、負載、http
    resolver是配置正向代理的DNS服務(wù)器,listen 是正向代理的端口,配置好了就可以在ie上面或者其他代理插件上面使用服務(wù)器ip+端口號進(jìn)行代理了。
    最后說(shuō)兩句
    Nginx是支持熱啟動(dòng)的,也就是說(shuō)當我們修改配置文件后,不用關(guān)閉Nginx,就可以實(shí)現讓配置生效,當然我并不知道多少人知道這個(gè),反正我一開(kāi)始并不知道,導致經(jīng)常殺死了Nginx線(xiàn)程再來(lái)啟動(dòng)。。。Nginx從新讀取配置的命令是nginx -s reload ,windows下面就是 nginx.exe -s reload 


    相關(guān)文章

    我們很樂(lè )意傾聽(tīng)您的聲音!
    即刻與我們取得聯(lián)絡(luò )
    成為日后肩并肩合作的伙伴。

    行業(yè)資訊

    聯(lián)系我們

    13387904606

    地址:新余市仙女湖區仙女湖大道萬(wàn)商紅A2棟

    手機:13755589003
    QQ:122322500
    微信號:13755589003

    江西新余網(wǎng)站設計_小程序制作_OA系統開(kāi)發(fā)_企業(yè)ERP管理系統_app開(kāi)發(fā)-新余聯(lián)升網(wǎng)絡(luò )科技有限公司 贛ICP備19013599號-1   贛公網(wǎng)安備 36050202000267號   

    微信二維碼
    色噜噜狠狠一区二区三区果冻|欧美亚洲日本国产一区|国产精品无码在线观看|午夜视频在线观看一区|日韩少妇一区二区无码|伊人亚洲日韩欧美一区二区|国产在线码观看清码视频