国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

這篇具有很好參考價值的文章主要介紹了Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一. Nginx介紹

?1. Nginx到底是什么,干什么用?

????????Nginx是一個 輕量級/高性能的反向代理Web服務器,它是由C語言寫的,所以速度非??臁⑿阅芊浅?yōu)秀。它的主要功能就是反向代理、負載均衡、配置SSL證書、防盜鏈、解決跨域問題、緩存、限流、動靜資源分離等等。

? ? ? ? 上面介紹了Nginx是一臺Web服務器,實際上,他并不是一臺真正意義上的物理機服務器,并不是主觀上真實存在的實體,它是運行在某一臺服務器(電腦)上的軟件。

????????那為什么還說它是一臺Web服務器呢?我們先來理解一下什么是網關,大家都知道,從一個房間進入另一個房間內,必須經過一個門,就像經過一個“關口”,那從一個網絡發(fā)送一個信息到另一個網絡,也必須經過一個“關口”,這個關口就可以說是網關。這個關口并不是擺在那里那么簡單,關口可以自行決定允不允許讓你的消息通過,或者決定是否替你轉發(fā)和接收消息、把消息分發(fā)給其他人,或者幫你的消息添加和預處理一些信息,或者替你回答消息等等功能。

? ? ? ? 而Nginx就相當于這個網關,轉發(fā)和接收消息就相當于反向代理,把消息分發(fā)給其他人就相當于負載均衡。當我們的服務器(電腦)上安裝了Nginx這個軟件,通過一些簡單的配置并運行這個軟件,我們在服務器上運行的項目(例如Java程序)在接收Http請求的時候,這個請求就會被Nginx這個網關先攔截,經過一些上述的處理之后再交給Java程序,此時Nginx就充當了一個網關。因為外網用戶的所有請求都會先經過Nginx,所以對于外網的用戶來說,他們的請求都是發(fā)送給Nginx的,再由Nginx發(fā)送給Java程序處理后再發(fā)還給用戶,那么從用戶的角度來看,Nginx就相當于一臺服務器在接收和回復用戶發(fā)送的消息,所以也可以理解為Nginx是一臺Web服務器。

?2. 為什么要用Nginx?

? ? ? ? Nginx跨平臺,配置簡單。我們可以在Linux系統(tǒng)和windows系統(tǒng)上都開啟Nginx服務,配置也非常簡單,在linux上,我們通常只需要修改三四行代碼,既可以完成對項目的配置。當后端程序重構或者重新部署,例如由Java項目換成go項目,也不需要修改Nginx。

Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

? ? ? ? ?Nginx是由C語言寫的,速度非常快,性能優(yōu)越。目前公認的性能最高的后端語言就是C和C++,而Nginx就是由C寫和編譯的,其單機并發(fā)量非常高,可以達到5w+,而一般的后端Java程序并沒有這么高的并發(fā)量,所以一般都會選擇Nginx當網關放在Java程序之前,提高系統(tǒng)的整體性能。

? ? ? ? 動靜資源分離。一般的前后端分離項目,用戶想獲取前端靜態(tài)資源文件,都得先經過后端Java程序的接口再獲取服務器上的靜態(tài)資源文件,這樣的效率并不是特別高,而且會占用正常程序接口的連接數量,這時候Nginx的動靜資源分離功能就提供了很好的解決方法,一般靜態(tài)資源文件都放在Nginx服務器中,當Nginx接收到了獲取靜態(tài)資源文件的請求,就直接在Nginx服務器中把放進去的靜態(tài)資源返回了,而不用真正到達后端接口,這個效率是非常高的,比正常的訪問速度會快一倍左右。

? ? ? ? 在并發(fā)量較大的項目中,后端往往會開啟多個相同的Java服務,來緩解單服務的壓力,我們知道,每一個Java服務程序都會占用一個端口,那前端在后端接口的時候,怎么知道該選用哪個接口呢?這時就可以在所有的Java程序前放置一個Nginx程序,所有的請求都經過Nginx,由Nginx決定分發(fā)到哪個端口程序上,這樣,雖然后端有很多個Java程序,但對于前端來說,是無感知的,就好像后臺只有一個項目在跑一樣。

????????那這么多后端程序在跑,萬一有一個程序掛了前端不知道怎么辦?放心,Nginx還有一個Keepalive?;顧C制,Nginx會不斷監(jiān)聽后端程序的接口,看該服務是不是在正常運行,萬一有一個程序掛了,那么Nginx就不會把前端發(fā)來的請求轉發(fā)給這個接口,確保后端服務的高可用性和穩(wěn)定性。

二. 具體常見應用

1. 反向代理? ?

(1). 正向代理?

? ? ? ? ?說到反向代理,我們常常會想到正向代理,那么兩者有何區(qū)別呢?

Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

????????正常情況下,我們訪問一個網頁、服務器,只需要在瀏覽器中輸入相應的域名或ip地址和端口號,經過DNS解析后,就可以訪問到服務器上的資源,這是最普通也是最直接的連接方式,也就是用戶端和服務端的直接連接,我們可以直接訪問服務器,但是這樣有一個問題,我們用戶端的ip地址就泄露給了對方,如果我們不想讓服務端知道我們的ip地址呢?

? ? ? ? 這時候就需要正向代理了,不同于反向代理,正向代理的網關是用戶端自己配置和搭建的,用戶端和網關是一伙的,這樣用戶端每次要訪問服務端的時候,就把請求發(fā)到自己配置的網關上,然后由網關轉發(fā)用戶的請求給服務端,服務端返回響應后就再發(fā)還給用戶。對于服務器來說,具體用戶是誰是無感知的,因為請求都來源于網關代理的轉發(fā),這樣服務端就不知道真正發(fā)請求的用戶到底是誰。

(2). 反向代理

Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!????????

?拿nginx實現(xiàn)的反向代理來說,不同于正向代理,反向代理的網關和服務器是一伙的,用戶端無法通過公網直接訪問到后臺服務器上的Java應用程序,但是可以直接訪問nginx網關,再由nginx分發(fā)到不同的服務器(或者說應用程序)上,真正提供服務的服務器對于用戶來說是無感知的,所有的請求都必須先發(fā)送到nginx網關上,再進行請求轉發(fā),用戶端并不知道真正提供服務的服務器是誰,也不知道它的具體ip地址和端口,所以稱之為反向代理。

Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

? ? ? ? ?拿nginx的常見配置來講,server_name實際上就是本機的ip,listen就是監(jiān)聽這個ip下的某個端口。而location則可以理解要攔截哪個url進行處理,“/”表示攔截所有。proxy_pass則表示把這個攔截的url要轉發(fā)到哪個服務器上,所以填的是ip+端口。這樣就可以做到反向代理,把某個ip+端口+路徑的請求給攔截下來,轉發(fā)到另一個ip+端口+路徑的資源上。

2. 負載均衡

Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

? ? ? ? ?通常后端項目并只會開啟一個Java應用程序,一般都會開啟多個,這時候就需要nginx來選擇將所有的請求分發(fā)給不同的程序應用,這個過程就是負載均衡。

? ? ? ? 那我們怎么知道要按哪些規(guī)則去分發(fā)這些請求呢?nginx中已經提供了幾種常見的負載均衡算法,例如默認的輪詢算法,按順序、平均地把每一條請求分發(fā)出去。

upstream backserver { 
 server 192.168.1.1; 
 server 192.168.1.2; 
} 

或者按權重分配,權重值高的分配請求也越多。

upstream backserver { 
 server 192.168.1.13 weight=2; 
 server 192.168.1.14 weight=8; 
} 

或者按用戶端的ip進行hash運算分配。

upstream backserver { 
 ip_hash; 
 server 192.168.0.11:88; 
 server 192.168.0.13:80; 
} 

3. 解決跨域問題

 
location / {  
    #允許跨域請求的域,* 代表所有
    add_header 'Access-Control-Allow-Origin' *;
    #允許請求的header
    add_header 'Access-Control-Allow-Headers' *;
    #允許帶上cookie請求
    add_header 'Access-Control-Allow-Credentials' 'true';
    #允許請求的方法,比如 GET,POST,PUT,DELETE
    add_header 'Access-Control-Allow-Methods' *;
    if ($request_method = 'OPTIONS') {
        return 204;
    }
    proxy_pass http://192.168.1.12:8080;
}

? ? ? ? 只要在nginx配置中添加相關配置,nginx就會在分發(fā)每個請求前,再請求中加上跨域相關配置的請求頭,再分發(fā)給后端應用,對于前端來說,可以實現(xiàn)無感知的跨域。

4. 限流

? ? ? ? 漏桶算法

Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

?????????用戶端的大量請求(突發(fā)流量)會進入nginx內維護的漏桶中,漏桶會按照我們定義的固定的速率給服務器分發(fā)請求,正常的請求在服務器處理完后會正常返回給用戶端。如果水流過大(突發(fā)流量過大)時,漏桶內的水會溢出,這時nginx就把這些溢出的水(流量)直接丟棄,也就是給用戶端返回錯誤信息。

? ? ? ? 令牌桶算法

Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

? ? ? ? ?用戶端發(fā)請求給nginx時,每個請求都要去nginx的令牌桶中取一個令牌,令牌桶的容量是我們自己設定的,如果某個請求成功取到了令牌,那么nginx就會把這個請求轉發(fā)到服務器上進行處理。如果令牌桶已空,請求在nginx令牌桶中取不到令牌,那么nginx會直接返回該請求,也就是給用戶端返回錯誤信息。

三. 常見問題

1. 為什么訪問后端服務時,有時候要用ip+端口或者域名+端口,而有時候則可以直接用ip或者域名就可以訪問?

? ? ? ??HTTP協(xié)議默認使用的端口是80,HTTPS協(xié)議默認使用的端口是443,這是因為在早期互聯(lián)網的設計中,為了方便,HTTP和HTTPS協(xié)議的默認端口就是這兩個端口。一般來說,在瀏覽器訪問網站時,如果沒有指定端口號,瀏覽器會默認使用HTTP協(xié)議的80端口或HTTPS協(xié)議的443端口進行連接。因此,在設置域名默認端口時,應該考慮使用這兩個默認端口之一,以便用戶可以直接通過域名訪問網站,而不需要手動輸入端口號。

? ? ? ? 但是我們一個服務器上,可能有很多個域名都綁定了這個服務器的ip,每個域名都是一個獨立的網站,而且服務器上可能有很多個后端應用服務,而端口(80)只有一個,那這么多網站和服務怎么公用一個端口呢?沒錯,還是靠nginx,我們只需要配置多個server即可,多個server都監(jiān)聽80端口,再根據域名的不同將請求轉發(fā)到不同的端口即可? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?監(jiān)聽www.aa.com域名的80端口,并轉發(fā)到8080端口? ? ? ? ? ? ?

?Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?監(jiān)聽www.bb.com域名的80端口,并轉發(fā)到8081端口

Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

2. 服務器代理和vpn代理有什么不同?

????????Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

(1). vpn是怎么實現(xiàn)在家也能連到公司內網的?? ? ? ? ?

????????nginx的代理往往只是代理轉發(fā)請求,只需要服務端架設nginx開啟反向代理或者客戶端開啟正向代理。而vpn代理則是通過隧道技術在公共網絡上模擬出一條點到點的邏輯專線,從而達到安全數據傳輸的目的,最常見的用處就是人不在公司,通過vpn設備訪問公司內網。

? ? ? ? 當我們不使用vpn時,我們直接訪問公司內網,帶上的是公網ip,公司內的設備都是內網ip,公司內網沒有接入公網,肯定訪問不到公司內網,而且人家也不認識你的公網ip,這時候要訪問公司內網,有兩種方法,一種是從你家專門接一條網線到公司的服務器,聽著確實可以,但是實際上確很不現(xiàn)實。第二種方法就是vpn技術,在公網上建立一條專門的隧道,直接連接你的設備和公司內網設備。架設vpn裝線,往往需要用戶端和服務端都部署和配置裝門的vpn設備,也就是上圖的vpn網關,例如路由器式vpn、交換機式vpn。

(2). vpn設計與實現(xiàn)

? ? ? ? vpn最主要的技術就是隧道技術,隧道技術用通俗的話來講就是用另一種協(xié)議去封裝我們使用的協(xié)議,隧道協(xié)議分為第二、第三層隧道協(xié)議,第二層隧道協(xié)議(如L2TP、PPTP、L2F等)工作在OSI體系結構的第二層(即數據鏈路層);第三層隧道協(xié)議(如IPSec、GRE等)工作在OSl體系結構的第三層(即網絡層),這兩個協(xié)議會在我們網絡層封裝完IP頭后,再封裝IPSec或者GRE頭,并進行信息加密,這也是代理服務器不會做的。然后再交由網絡接口層添加mac頭再丟到公網中,這樣公網就認得你的ip并且能找到你公司內網前架設的vpn網關。

? ? ? ? vpn設備還會使用常用加解密技術,例如對稱密鑰加密和非對稱密鑰加密組合使用,例如用https的TLS加密技術。

????????密鑰管理技術和身份認證及訪問控制技術的支持。

(3). 代理服務器和vpn有什么不一樣?

? ? ? ? 1. 匿名性不同。雖然它們都位于請求的中間,都隱藏了 IP 地址,并且都將信息轉發(fā)。
主要區(qū)別在于 VPN 需要隧道過程,該過程建立了到 VPN 服務器的直接且不可穿透的連接。代理只是一個開放的端口,是任何人都可以連接到的單個 IP 地址。

? ? ? ? 2. 安全性不同。vpn會加密我們的數據信息,代理服務器不會,因此vpn更加私有,連接不會被穿透,是一個開在公網上的封閉系統(tǒng)。

? ? ? ? 3. 運行級別不同。vpn是運行在操作系統(tǒng)上,由操作系統(tǒng)內核封裝,重定向請求流量。代理服務器是軟件級別,處于用戶態(tài)。

? ? ? ? 4. 速度不同。vpn涉及加密解密,數據封裝,速度較慢,但因其安全性,價格成本會更高。

四. 結語

?感謝您的耐心閱讀?。。?!

?看完了不妨點贊收藏吧~

?您的支持是博主創(chuàng)作的最大動力?。。。?mark hidden color="red">文章來源:http://www.zghlxwxcb.cn/news/detail-410073.html

?感謝耐心閱讀?。??文章來源地址http://www.zghlxwxcb.cn/news/detail-410073.html

到了這里,關于Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 通俗易懂:什么是拉鏈表

    拉鏈表是數據倉庫中一種重要的模型,相信很多數據工作者都接觸過,面試也是經??疾斓狞c。 但是很多人第一次接觸“拉鏈表”這個詞,難免會產生疑惑:拉鏈表是什么? 按照度娘的解釋:“拉鏈表是一種針對數據倉庫設計中表存儲數據的方式而定義的數據模型,它有點

    2024年02月08日
    瀏覽(18)
  • 通俗解釋什么是NFT,NFT到底是什么

    通俗解釋什么是NFT,NFT到底是什么

    一、快速了解 NFT,可以簡單類比 房產證 ,把房子換成圖片、視頻、聲音等各種數字資產,紙質證書換成去中心化的數字認證,就變成NFT了。 擁有一個NFT就代表擁有“對應某個數字資產所有權”的證書。 最早的NFT養(yǎng)貓游戲 CryPtoKitties 二、擴展知識 1. 詳細解釋 NFT全稱Non-Fung

    2024年02月03日
    瀏覽(18)
  • 通俗易懂,unity和c#是什么關系

    通俗易懂,unity和c#是什么關系

    Unity 是實時3D互動內容創(chuàng)作和運營平臺。包括游戲開發(fā)、美術、建筑、汽車設計、影視在內的所有創(chuàng)作者,借助Unity將創(chuàng)意變成現(xiàn)實。 Unity平臺提供一整套完善的軟件解決方案 ,可用于創(chuàng)作、運營和變現(xiàn)任何實時互動的2D和3D內容,支持平臺包括手機、平板電腦、PC、游戲主機

    2024年02月04日
    瀏覽(19)
  • 什么是poe交換機?通俗易懂的介紹

    交換機端口支持輸出功率達15.4W,符合IEEE802.3af標準,通過網線供電的方式為標準的POE終端設備供電,免去額外的電源布線。經調研研華推出的符合IEEE802.3aT 標準的POE交換機,端口輸出功率可以達到25-30W .通俗的說 ,POE交換機就是支持網線供電的交換機,其不但可以實現(xiàn)普通交

    2024年02月06日
    瀏覽(17)
  • 前端開發(fā)是做什么的?工作職責

    前端開發(fā)是做什么的?工作職責

    想要了解前端從業(yè)者的工作職責,需要從一個完整網站應用產生流程入手,一個網站應用從無到有的過程大致如下 : 1)產品經理與甲方反復溝通交流,逐步確定產品需求完成設計草圖; 2)產品經理根據需求和草圖進行分析,提交 PRD(需求文檔),并與開發(fā)人員協(xié)商軟件功

    2023年04月10日
    瀏覽(93)
  • Python中的命名元組(namedtuple)到底是什么東西?干嘛用的?

    Python中的命名元組(namedtuple)到底是什么東西?干嘛用的?

    Python中有一種特殊的元組叫做命名元組,英文名叫namedtuple。 為什么要用命名元組呢? 思考下面的問題: 如何設計數據結構承載一個五維的數據,如一個學生的基本信息? 方法有二: 1. Python是面向對象語言,可以使用class,定義一個學生類,將五維信息作為屬性,這是一個

    2024年02月10日
    瀏覽(24)
  • IDE/VS項目屬性中的 <字符集> 配置項,它到底是干什么用的?

    IDE/VS項目屬性中的 <字符集> 配置項,它到底是干什么用的?

    在整理 《QtCreator 下使用MSVC編譯器》這篇文章時,回想起當年并沒有徹底搞明白 “項目屬性 - 常規(guī) - 項目默認值 - 字符集” 配置項的作用。且我堅信,搞明白此問題,那么 Qt + MSVC集成開發(fā)環(huán)境下的一些原有問題將會不攻自破。于是單獨拎出來整理啦此篇文章。整理此篇文章

    2024年02月16日
    瀏覽(20)
  • 通俗易懂地解釋OpenAI Sora視頻生成的特點有哪些?與Runway Gen2、Pika有什么區(qū)別?缺點是什么?

    通俗易懂地解釋OpenAI Sora視頻生成的特點有哪些?與Runway Gen2、Pika有什么區(qū)別?缺點是什么?

    OpenAI的Sora模型是最近兩天最火熱的模型。它生成的視頻無論是清晰度、連貫性和時間上都有非常好的結果。在Sora之前,業(yè)界已經有了很多視頻生成工具和平臺。但為什么Sora可以引起如此大的關注?Sora生成的視頻與此前其它平臺生成的視頻到底有哪些區(qū)別?有很多童鞋似乎對

    2024年02月19日
    瀏覽(18)
  • python做了一個極簡的柵格地圖行走機器人,到底能干啥?

    python做了一個極簡的柵格地圖行走機器人,到底能干啥?

    在現(xiàn)代科技的普及下,人們對于機器人的興趣與期待日漸增加。然而,大多數人對機器人的印象仍停留在復雜、高度智能的形象上。而今天,我將重點介紹一個極簡的柵格地圖行走機器人,它不僅使用了簡單的編程語言Python,而且只是一個基礎的柵格地圖行走算法的展示。這

    2024年02月20日
    瀏覽(16)
  • 前端到底是什么?

    前端到底是什么?

    前端又稱web前端,用官方定義來說,前端就是網站前臺部分,運行在PC端、移動端等瀏覽器上展獻給用戶瀏覽的網頁,所以大部分人的理解,前端就是開放網頁的。 ? 但其實并不是,前端開發(fā)是創(chuàng)建Web頁面或APP等前端界面呈現(xiàn)給用戶的過程,通過HTML,CSS,及JavaScript以及衍生出來

    2024年02月09日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包