當前位置:
首頁 > 最新 > Nginx 原理解析和配置摘要

Nginx 原理解析和配置摘要

前言

Nginx 作為高性能的 http 伺服器,知名度不必多言,相似產品中無出其右。本篇隨筆記錄我認為較為重要的原理和配置。


1. 原理解析

1.1 結構

以上是 Nginx 的結構圖,其包含一個 master 和 n 個 worker,masterprocesses 用於外部通信和統一管理其下 workerprocesses ,因此可以做到重啟時不中斷服務。另外,Nginx 採用了非同步非阻塞的方式來處理請求,避免了 cpu 閑置,這是其高性能的主要原由。

Nginx 從功能上可分為以下三大類:

Handlers(處理器模塊):用於直接處理請求,並進行輸出內容和修改 headers 信息等操作,一般只能有一個。

Filters(過濾器模塊):主要對處理器模塊輸出的內容進行修改操作,然後輸出。

Proxies(代理模塊):主要是 upstream 模塊,與後端一些服務比如 FastCGI 等進行交互,實現服務代理和負載均衡等功能。

上圖是 Nginx 常規的 HTTP 請求和響應過程,當接到請求時,通過查找配置文件將其映射到一個 location block,並按照其中所配置的各個指令,啟動不同的模塊去完成工作。通常一個 location 中的指令會涉及一個 handler 模塊和多個 filter 模塊。另外,Nginx 的模塊屬於靜態編譯方式,在啟動後自動載入。


Nginx 對於我來說最常規的運用就是靜態資源處理和反向代理,因此我只記錄這些相關的配置。Nginx 配置一般分為三部分:global、events 和 http,通用基本配置一般保存在 文件中,具體的服務配置一般保存在 文件夾下。


一般在 配置文件的開頭位置設置一些與具體業務無關的參數,如下:

Events 中需要自行調整的就一個必要參數:worker_connections,這個數值涉及到最大連接數的計算,即:

當然這個最大連接數還與系統可打開的最大文件數有關,max_clients 必須要小於 file-max( ),我的配置:


2.2.1 全局配置

一般情況下虛擬主機以外的配置保持默認就行了,如:gzip 壓縮,ip 獲取等一般都交給雲伺服器的負載均衡處理了,寫一下默認值吧:

2.2.2 server 虛擬主機配置

真正的與業務相關的配置都在這個小節,順著流程來講吧。現在不論是公司站還是個人站都應該普及了 https 了吧(運營商的 http 劫持實在太流氓了,特別是手機端的 web,再強調一遍,流氓,流氓...),這裡面涉及到一個 https 強制跳轉問題,可以讓負載均衡的 80 埠來監聽伺服器的 81 埠進行重定向:

如果是靜態網頁相關的配置,可以參考 :

Nginx 更多的情況是用作反向代理:


沒啥好說的,不做特殊用途的話以下命令能夠滿足操作了:


本篇隨筆可以說是 Nginx 的一些基本摘要,使用和原理方面都沒有深入探究,後續如果使用到更高級功能或者有新的應用場景,再來繼續補充內容。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 有刻 的精彩文章:

TAG:有刻 |