首頁>Club>
能全面說說Nginx到底能做什麼嗎?
8
回覆列表
  • 1 # 雲渺書齋

    Nginx能做反向代理、負載均衡、HTTP伺服器、正向代理和Web快取等。

    Nginx

    Nginx是lgor Sysoev為俄羅斯訪問量第二的rambler.ru站點設計開發的。從2004年釋出至今,憑藉開源的力量,已經接近成熟與完善。

    Nginx功能豐富,可作為HTTP伺服器,也可作為反向代理伺服器,郵件伺服器。支援FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。並且支援很多第三方的模組擴充套件。

    常用功能反向代理,代理物件為服務端做代理,使客戶端不需要感知服務端的存在,只需要訪問代理伺服器便可獲得想要的結果。實現限流、負載均衡、動靜分離等。負載均衡(Load Balance),是分散式系統中一個非常重要的概念。當訪問的服務具有多個例項節點時,需要根據某種“均衡”的策略決定請求發往哪個節點,這個過程就是所謂的負載均衡。多在高併發情況下需要使用。其原理就是將資料流量分攤到多個伺服器執行,減輕每臺伺服器的壓力,多臺伺服器(叢集)共同完成工作任務,從而提高了資料的吞吐量。Nginx是一個輕量級、高效能、穩定性高、併發性好的HTTP和反向代理伺服器。web快取,Nginx可以對不同的檔案做不同的快取處理,配置靈活,並且支援FastCGI_Cache,主要用於對FastCGI的動態程式進行快取。配合著第三方的ngx_cache_purge,對制定的URL快取內容可以的進行增刪管理。動靜分離:讓動態網站裡的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以後,我們就可以根據靜態資源的特點將其做快取操作。提高使用者訪問靜態程式碼的速度,降低對後臺應用訪問。

    如果解決了你的疑惑,請點點關注和評論,謝謝支援。

    正春華枝俏,待秋實果茂,與君共勉。

  • 2 # 技術猿小黃

    nginx可以作為web伺服器、快取伺服器、HTTP代理伺服器、負載均衡伺服器。

    什麼是nginx

    Nginx(發音為“ engine-x”)是一種開源軟體,最初被設計為高效能Web伺服器。今天,Nginx可以完成其他一些任務,包括快取伺服器,反向代理伺服器,負載平衡器等等

    web伺服器

    目前主流使用的web伺服器軟體,主要有apache、nginx、tomcat、iis等,在全球範圍內來說,Apache是現有的最流行的Web伺服器,但是在高流量網站中最流行的Web伺服器確實nginx,在中國不管是大中小網際網路公司,主流選擇的也是nginx作為web伺服器軟體。一份來自Netcraft的調查中,發現Apache的使用率為31.54%,Nginx的使用率為26.20%。

    HTTP代理伺服器

    HTTP代理,分兩類:一種的正向代理,一種是反向代理。

    反向代理。就是真實伺服器不直接訪問,而是透過代理進行訪問,代理伺服器和真實伺服器是在同一個網路環境。對於訪問來說是無感的,代理伺服器對於訪問者來說就是提供服務的伺服器。基於nginx的反向代理,可以實現分散式(不同子域名訪問不同的服務後端節點)和負載均衡(相同的域名訪問多個相同的後端節點)正向代理。與反向代理類似。不同的是正向代理是客戶端的代理。對於服務端來說,代理就是一個訪問者。網上尋找的HTTP代理就屬於正向代理

    反向代理和正向代理的區別:

    反向代理:針對客戶端而言,代理伺服器就像是原始伺服器,代理叢集的web節點伺服器返回結果。

    負載均衡器

    負載均衡也是Nginx常用的一個功能,基於nginx反向代理。負載均衡其意思就是分攤到多個操作單元上進行執行,例如Web伺服器、FTP伺服器、企業關鍵應用伺服器和其它關鍵任務伺服器等,從而共同完成工作任務。

    簡單而言就是當有2臺或以上伺服器時,根據規則隨機的將請求分發到指定的伺服器上處理,負載均衡配置一般都需要同時配置反向代理,透過反向代理跳轉到負載均衡。

    Nginx目前支援自帶3種負載均衡策略(輪詢、加權輪詢、IP雜湊),還有2種常用的第三方策略(fair、url雜湊)。

    快取伺服器

    nginx可以實現圖片、css、js等靜態資原始檔的快取,nginx作為快取伺服器時是搭配nginx作為反向代理伺服器一起使用的。當客戶端第一次透過nginx向後端資源伺服器請求靜態資源,響應給對應的客戶端同時自身快取一份,後續如果請求相同的資源,就不需要再次向後端伺服器請求了,除非快取被清理或者快取過期。

    結束語

    nginx的幾個功能很少單一使用,基本都是幾個功能搭配混合在一起使用。做實際專案中,nginx一般作為七層負載均衡器,實現分散式架構和應用伺服器高可用,還可以實現動靜分離,同時快取靜態資源,減輕後端伺服器負載。

  • 3 # 網路圈

    Nginx是一款高效能的HTTP和反向代理伺服器,同時也支援郵件服務。因其記憶體佔用小、高併發的特性使得在世界範圍內使用廣泛,像國內網際網路大企業無一例外使用的就是Nginx,比如淘寶還基於Nginx開發了Tengine。

    既然Nginx應用這麼廣泛,那它到底能幹些啥呢?下面我列舉一些場景來說明下Nginx的用途:

    1、反向代理

    在LNMP這種架構模式下,其實就用到了反向代理。因為Nginx它預設只支援靜態資源的請求,比如說PHP指令碼也不是由Nginx直接解析的,而是由Nginx反向代理(透過 proxy_pass 指令)到PHP-FPM去解析的。

    所以我們通常在Apache、Tomcat、IIS之前加上Nginx,由Nginx反向代理到後端伺服器上。

    2、負載均衡

    當我們的站點訪問量大時,為了緩解單一應用伺服器的壓力我們通常會擴容多臺伺服器,此時如何把流量分發給不同伺服器呢?透過Nginx就可以實現負載均衡了,Nginx負載均衡策略也很多,主要有:RR(輪詢)、weight(權重)、ip_hash(IP Hash)、fair(後端伺服器響應時間)、url_hash(URL Hash)這幾種。

    3、動靜分離

    4、Nginx擴充套件

    透過Nginx擴充套件可以實現很多功能,如:

    圖片線上裁剪;

    請求合併;

    資源壓縮等。

  • 4 # 愛位元程式設計

    Nginx(發音同engine x)是一個高效能、跨平臺的HTTP Server,也可以用作反向代理、負載均衡和HTTP快取伺服器。俄羅斯人Igor Sysoev(伊戈爾·賽索耶夫)在2004年開發的,Nginx是免費的開源軟體,根據類BSD許可證的條款釋出。目前全球約有50%的網站都是用Nginx做Web伺服器。

    Nginx的優點

    1、開源免費

    Nginx完全開源免費,可以輕鬆搭建HTTP服務。

    相對傳統收費的負載均衡器F5,用Nginx搭建負載均衡服務成本比較低。

    2、高效能

    Nginx是基於C語言開發,在執行效率很高。

    Nginx是基於Master/Worker程序架構,Master程序管理多個Worker程序,開啟多個Worker程序併發處理請求,使用CPU親和性,充分發揮多核CPU的效能。基於事件驅動處理大量併發請求,解決C10k問題。

    3、佔用資源少

    Ngxin在設計和開發時對佔用記憶體做了大量的最佳化,1w多個非活躍的HTTP Keep-Alive連線在Nginx中僅消耗2.5MB的記憶體。

    4、跨平臺

    Nginx可以在在Linux、MacOS、Windows等平臺編譯部署。

    5、模組化擴充套件

    Nginx是高度模組化設計,可以根據抽象的模組介面開發定製相應的模組,以滿足業務需求,淘寶的Tengine就是基於Nginx開發定製的,淘寶開發很多有用的模組。

    Nginx的用途

    1、Web伺服器

    Nginx可以搭建Web伺服器,由於在效能優於Apache,因此很多公司逐漸用Nginx替換Apache。

    Nginx支援Lua,大牛章亦春基於Nginx與Lua開發高效能Web平臺OpenResty,其內部集成了大量精良的 Lua 庫、第三方模組以及大多數的依賴項。用於方便地搭建能夠處理超高併發、擴充套件性極高的動態 Web 應用、Web 服務和動態閘道器。

    2、反向代理

    3、負載均衡

    目前網際網路使用者成倍增長,單臺服務不足以應對海量使用者的請求,需要部署多臺後端應用服務,因此需要負載均衡器將請求負載到不同後端應用服務上,實現分散式叢集。以前都是硬負載均衡器F5,但是F5成本比較高,小公司很難承受起,再者F5功能比較固化,不夠靈活,因此Nginx做軟負載均衡器就比較流行。

    在一線網際網路公司,例如BAT公司,他們都有統一接入服務,對網際網路上的請求統一分發,這個統一接入服務一般都是用Nginx搭建的。

    4、HTTP快取服務

    Nginx支援快取,可以將快取圖片、js、css等,現在很多CDN廠商的CDN快取都是用的Nginx快取。

    隨著網際網路的迅猛發展和網際網路使用者數量的成倍增長,網際網路公司都需要應付海量併發請求,Nginx開源免費、高效能等特點會越來越受青睞。

  • 5 # JavaKeeper

    Nginx 概述

    NGINX是一個免費、開源、高效能、輕量級的HTTP和反向代理伺服器,也是一個電子郵件(IMAP/POP3)代理伺服器,其特點是佔有記憶體少,併發能力強。 Nginx 因為它的穩定性、豐富的模組庫、靈活的配置和較低的資源消耗而聞名 。目前應該是幾乎所有專案建設必備。

    Nginx由核心和一系列模組組成,核心提供web服務的基本功能,如啟用網路協議,建立執行環境,接收和分配客戶端請求,處理模組之間的互動。Nginx的各種功能和操作都由模組來實現。Nginx的模組從結構上分為核心模組、基礎模組和第三方模組。

    核心模組: HTTP模組、EVENT模組和MAIL模組

    基礎模組: HTTP Access模組、HTTP FastCGI模組、HTTP Proxy模組和HTTP Rewrite模組

    第三方模組: HTTP Upstream Request Hash模組、Notice模組和HTTP Access Key模組及使用者自己開發的模組

    這樣的設計使Nginx方便開發和擴充套件,也正因此才使得Nginx功能如此強大。Nginx的模組預設編譯進nginx中,如果需要增加或刪除模組,需要重新編譯Nginx,這一點不如Apache的動態載入模組方便。如果有需要動態載入模組,可以使用由淘寶網發起的web伺服器Tengine,在nginx的基礎上增加了很多高階特性,完全相容Nginx,已被國內很多網站採用。

    Nginx有很多擴充套件版本

    開源版 nginx.org商業版 NGINX Plus淘寶網發起的Web伺服器 Tengine基於Nginx和Lua的Web平臺 OpenRestyNginx 作為 web 伺服器

    Web伺服器也稱為WWW(WORLD WIDE WEB)伺服器,主要功能是提供網上資訊瀏覽服務,常常以B/S(Browser/Server)方式提供服務。

    應用層使用HTTP協議。HTML文件格式。瀏覽器統一資源定位器(URL)。

    Nginx 可以作為靜態頁面的 web 伺服器,同時還支援 CGI 協議的動態語言,比如 perl、php 等,但是不支援 java。Java 程式一般都透過與 Tomcat 配合完成。

    作為一名Java猿帥,肯定要理解下Nginx和Tomcat的區別了:

    Nginx、Apache和Tomcat

    Nginx—— 由俄羅斯程式設計師Igor Sysoev所開發的輕量級、高併發HTTP伺服器;

    Apache HTTP Server Project,一個Apache基金會下的HTTP服務專案,和Nginx功能類似;

    Apache Tomcat ,則是Apache基金會下的另外一個專案,是一個Application Server,更準確的說是一個

    servlet應用容器,與Apache HTTP Server和Nginx相比,Tomcat能夠動態的生成資源並返回到客戶端;

    Apache HTTP Server和Nginx本身不支援生成動態頁面,但它們可以透過其他模組來支援(例如透過Shell、PHP、Python指令碼程式來動態生成內容);

    一個 HTTP Server 關心的是 HTTP 協議層面的傳輸和訪問控制,所以在 Apache/Nginx 上你可以看到代理、負載均衡等功能。客戶端透過 HTTP Server 訪問伺服器上儲存的資源(HTML 檔案、圖片檔案等等)。透過 CGI 技術,也可以將處理過的內容透過 HTTP Server 分發,但是一個 HTTP Server 始終只是把伺服器上的檔案如實的透過 HTTP 協議傳輸給客戶端。

    而應用伺服器,則是一個應用執行的容器。它首先需要支援開發語言的執行(對於 Tomcat 來說,就是 Java),保證應用能夠在應用伺服器上正常執行。其次,需要支援應用相關的規範,例如類庫、安全方面的特性。對於 Tomcat 來說,就是需要提供 JSP/Sevlet 執行需要的標準類庫、Interface 等。為了方便,應用伺服器往往也會整合 HTTP Server 的功能,但是不如專業的 HTTP Server 那麼強大,所以應用伺服器往往是執行在 HTTP Server 的背後,執行應用,將動態的內容轉化為靜態的內容之後,透過 HTTP Server 分發到客戶端。

    正向代理

    正向代理:如果把區域網外的 Internet 想象成一個巨大的資源庫,則區域網中的客戶端要訪 問 Internet,則需要透過代理伺服器來訪問,這種代理服務就稱為正向代理。

    正向代理“代理”的是客戶端

    比如在家辦公期間,需要連公司的 VPN 辦公,這個就是所謂的”正向代理“。還有我們訪問 google也是。

    反向代理 與 負載均衡

    反向代理正好與正向代理相反,反向代理是指以代理伺服器來接收Internet上的連線請求,然後將請求轉發到內部網路上的伺服器,並將伺服器上得到的結果返回給客戶端,此時代理伺服器對外表現就是一個伺服器,客戶端對代理是無感知的。

    反向代理“代理”的是服務端

    再比如,你想本本分分的在“優酷”上看個“愛情片”,youku.com會把你的請求分發到存放片片的那臺機器上,這個就是所謂的”反向代理“。

    為什麼使用反向代理

    保護和隱藏原始資源伺服器加密和SSL加速透過快取靜態資源,加速Web請求實現負載均衡

    負載均衡地址重定向

    Nginx 的Rewrite主要的功能就是實現URL重寫

    比如輸入360.com 跳轉到了360.cn,baidu.cn跳轉到了baidu.com

    動靜分離

    為了加快網站的解析速度,可以把動態頁面和靜態頁面由不同的伺服器來解析,加快解析速度,降低原來單個伺服器的壓力。 這裡指的就是讓動態程式(Java、PHP)去訪問應用伺服器,讓快取、圖片、JS、CSS等去訪問Nginx。

    2. Nginx 安裝

    下載Nginx

    安裝需要編譯的外掛

    用於編譯c、c++程式碼的GCC;

    用c語言編寫的正則表示式函式庫Pcre(使用rewrite模組);

    用於資料壓縮的函式庫的Zlib;

    安全套接字層密碼庫OpenSSL(啟用SSL支援)

    解壓、配置(Nginx支援各種配置選項,文末一一列出 Nginx配置選項 )、編譯、安裝nginx

    啟動、重啟、關閉

    驗證(瀏覽器輸入ip)

  • 中秋節和大豐收的關聯?
  • 工勤崗位薪級到達40級後如何調整?