這篇文章主要簡單的介紹下 Nginx 的相關知識,主要包括以下幾部分內容:
Nginx 適用于哪些場景?
為什么會出現 Nginx?
Nginx 優點
Nginx 的編譯與配置
如圖所示,一個請求會先經過 Nginx 到達應用服務層,然后再去訪問數據層(比如 Redis、MySQL 等),提供基本的數據功能。我們的應用服務因為要求開發效率是非常高的,所以它的運行效率是很低的,它的 qps、tps或者并發都是受限的,所以我們需要把很多這樣的應用服務組成集群,向用戶提供高可用服務。而一旦很多服務構成集群的時候,我們需要 Nginx 具備反向代理功能,可以把動態請求傳遞給應用服務。
而當應用服務構成集群,一定會帶來兩個需求:
需要動態的擴容
有些服務出現問題的時候我們需要做容災
這樣反向代理必須具備負載均衡功能。
其次在這樣的一個鏈路中, Nginx 是處在企業內網的一個邊緣節點,隨著網絡鏈路的增長,用戶體驗到的時延會增加,所以需要把用戶看起來不變的或者在一段時間內看起來不變的動態內容緩存在 Nginx 部分,由 Nginx 直接向用戶提供訪問,這樣用戶時延就會減少很多。所以反向代理延伸出另外一個功能就是緩存,來減少用戶訪問的時延。
像很多 css、js、img 靜態資源,是沒有必要通過應用服務來訪問的,只需要本地文件系統上放置的靜態資源,直接由 Nginx 提供訪問就可以了。這是 Nginx 的靜態資源服務。
應用服務本身的性能存在很多問題,像數據庫服務比應用服務好的多,因為業務場景比較簡單,并發性能和tps都要遠高于應用服務,所以延伸出第三個應用場景:由 Nginx 直接去訪問數據庫、Redis,利用 Nginx 強大的并發性能實現如 web防火墻 復雜的一些業務功能。這就需要api服務有很強的業務處理功能,所以像 OpenResty、 Nginx 集成的 JavaScript,應用 JavaScript、lua 這樣的語言功能和它們語言自帶的一些工具庫來提供完整的 API服務。
伴隨著互聯網的快速普及、以及全球化和物聯網的快速發展,導致互聯網的數據量快速增長。
CPU 核數從當初的單核發展到 16 核,甚至 32 核,但是由于操作系統和大量的軟件沒有做好服務于多核架構的準備,致使服務的性能通常不會有成倍的提升。
Apache 的架構模型一個進程同一時間只會處理一個鏈接一個請求,處理完以后才會處理下一個請求。它實際上在使用操作系統的進程間切換的特性,因為操作系統微觀上只有有限的 CPU,但是操作系統被設計為同時服務數百甚至上千的進程,而 Apache 一個進程只能服務于一個鏈接,這樣的模式會導致當 Apache 需要面對幾十萬、幾百萬鏈接的時候,它沒有辦法去開幾十萬、幾百萬的進程;而進程間切換的代價成本又太高了,當并發的連接數越多,這種無謂的進程間切換引發的性能消耗也就越大,而 Nginx 是專門為了這樣的應用場景而生的,Nginx 可以處理數百萬甚至上千萬的并發鏈接。
一、高并發,高性能
只要我們對每個鏈接使用的內存足夠少就能實現高并發;既要達到高并發又要達到高性能,往往需要很好的設計。
比如現在的主流云服務器,nginx 在 32 核 64G 的配置中可以輕松達到數千萬的并發鏈接;如果是處理簡單的靜態資源請求,nginx 可以達到 100w 的 RPS 。
RPS(Requests Per Second)為每秒能處理的請求數目,等效于 QPS(Queries Per Second),也就是每秒能處理查詢數目。是一臺服務器每秒能夠相應的查詢次數,是對一個特定的查詢服務器在規定時間內所處理流量多少的衡量標準。
二、可擴展性好
可擴展性主要體現在模塊化設計;模塊化設計非常穩定,使得 Nginx 的生態圈、第三方模塊非常豐富。甚至于有 Tengine、OpenResty 這樣的第三方插件在他的基礎之上又生成了新的生態圈。豐富的生態圈和第三方模塊為 Nginx 的豐富功能提供了保證。
三、高可靠性
高可靠性指的是 Nginx 可以服務器上持續不間斷的運行數年,而很多web服務器往往運行幾周or幾個月,就需要進行一次重啟。對于 Nginx 這樣一個高并發、高性能的反向代理服務器而言,往往運行在企業內網的邊緣節點上,這個時候如果我們企業想提供4個9、5個9、甚至更高的高可用性時,對于 Nginx 持續運行能夠宕機的時間一年可能只能以秒來計,所以在這樣一個角色中,Nginx 的高可靠性給我們提供了非常好的保證。
四、熱部署
熱部署是指在不停止服務的情況下升級Nginx。這個功能對于 Nginx 來說非常重要,因為在服務器上跑了數百萬的并發鏈接,如果是普通的服務器,我們只能 kill 掉進程再重啟的方式進行升級操作。但是對于 Nginx 而言,因為直接 kill 掉 nginx 進程會給所有的已經建立鏈接的客戶端一個很不好的體驗。
五、BSD 許可證
BSD許可證是指 Nginx 不只是開源的、免費的,而且我們可以在有定制需求的場景下,去修改 Nginx 的源碼,再運行在我們的商業場景下且屬于合法的。
Nginx 主要由以下 4 部分組成:
Nginx 二進制可執行文件:由各模塊源碼編譯出的一個文件
Nginx.conf 配置文件:控制 Nginx 行為
access.log 訪問日志:記錄每一條 http 請求信息
error.log 錯誤日志:定位問題
接下來,我們就要動手去編譯 Nginx 了。
#下載wgethttp://nginx.org/download/nginx-1.14.0.tar.gz#解壓tar-xzvfnginx-1.14.0.tar.gzcdnginx-1.14.0#配置./configure--prefix=/usr/local/nginx#編譯make#安裝makeinstall
在 configure 過程中可能遇到的問題:
./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre= option.
./configure: error: the HTTP gzip module requires the zlib library. You can either disable the module by using --without-http_gzip_module option, or install the zlib library into the system, or build the zlib library statically from the source with nginx by using --with-zlib= option.
出錯的原因是 Nginx 模塊需要依賴一些 lib 庫,解決辦法如下:
安裝pcre-devel和zlib-devel依賴庫:yum-yinstallpcre-develzlib-devel
http:表示里面所有的指令都是由 http 模塊去解析去執行的
server:解析對應的域名or一組域名
location:url 表達式
upstream:表示上游服務,需要與企業內網服務直連的時候,可以定義一個 upstream
示例中的所有指令都是由 Nginx 中的 http 模塊去執行的,其中 server 127.0.0.1:8000
為需要解析的域名,location 后面跟的為對應的匹配規則,expires 3m
表示 3 分鐘后 cache 刷新,zone=one:10m
表示開辟了一個 10m 大小的共享內存空間,給不同的 worker 去使用。
這篇文章主要介紹了 Nginx 出現的原因和使用場景,并分析 Nginx 的優點,最后動手去編譯屬于自己的 Nginx,并進行簡單配置。
感謝各位的閱讀,以上就是“Nginx的作用以及配置方法”的內容了,經過本文的學習后,相信大家對Nginx的作用以及配置方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是本站,小編將為大家推送更多相關知識點的文章,歡迎關注!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
咖啡是一種非常受歡迎的飲料。對于咖啡愛好者來說,咖啡不僅能帶來味蕾的享受,在下午愛打瞌睡的時候來一杯咖啡,還能提神醒腦。相比奶茶等街頭飲品,很多人對咖啡的印象似乎更友好一些,認為咖啡很好喝,提神,不容易讓人發胖。其實并不是這樣的??Х鹊昀锝洺?梢钥吹揭韵铝N咖啡。很多朋友點咖啡的時候,往往都在必點清單上。但是,很多人喝了之后,發現自己胖了很多。接下來我就給大家說說這幾款不推薦減肥的咖啡,看看你經常...
招商銀行異地匯款手續費1.柜臺:按交易金額的5‰收取,最低5元。2.網上銀行:A、快速匯款:按交易金額的2‰收取,最低5元,最高50元;B普通匯款:按交易金額的1%收取,最低10元,最高50元;C 異地他行:按交易金額的1%收取,最低10元,最高50元以下兩種情況是不收取手續費的:1、使用手機銀行以及網上銀行轉賬是不收取任何手續費的;2、在銀行柜臺轉賬或者使用ATM機進...
先行指標名詞解釋?四大先行指標是什么?下文隨小編一起來簡單了解下!先行指標又被稱為超前指標或者預兆性指標,指的是預示未來時間的經濟狀況以及可能會出現的商業周期性的變化,并幫助分析者提供了利率的趨勢變化早期跡象的市場指標。線性指標主要包括了貨幣供應量、稅后的公司利潤、股票的價格指數、商業與制造業的存貨賬面價值變動等等指標,先行指標通常會在總體經濟產生明顯變化之前的半年達到頂峰或是谷底。四大先行指標是...