你需要了解的 nginx 基礎配置

初探nginx

今天給大家講下nginx的基礎配置,很多小夥伴在開發的過程中會使用到 nginx ,但是確對 nginx 的配置其實並不了解,今天我給大家講下基礎的配置項.nginx 的功能很多,但是說到 nginx 大家最先想到的是反向代理和負載均衡.

"負載均衡"在開發環境體現的不太明顯,主要是為了解決生產環境的客戶端請求很多的時候,動態的去分散給各個伺服器,緩解伺服器壓力,充 分利用資源.而說到 "反向代理",你的第一反應應該是"正向代理",簡稱"代理",你可以把代理想像成客戶端和服務端的中介,代理的種類很多,比較常見的是,客戶端對服務端進行請求的時候,代理會對請求的內容進行下載緩存,從而提高客戶端的請求速度,代理還有多重代理,加密處理等功能,"反向代理"的作用和正項代理的功能相輔相成,原理也類似,反向代理將字元串和相應的伺服器和埠匹配上,從而獲取用戶想要獲取的內容,那麼這兩者的區分是什麼呢,"正向代理"作用於客戶端,"反向代理"作用於伺服器.

生動的 nginx 反向代理解釋

為了讓大家能夠更加深刻的理解代理和反向代理的模式,我們引用下知乎上車小胖的回答

有了第三方訂餐外賣平台(代理),老王懶得動身前往飯店,老王打個電話或用APP,先選好某個飯店,再點好菜,外賣小哥會送上門來。由於某個品牌的飯店口碑特別好,食客絡繹不絕湧入,第三方訂餐電話也不絕於耳,但是限於飯店接待能力有限,無法提供及時服務,很多食客等得不耐煩了,紛紛鎩羽而歸,飯店老總看著煮熟的鴨子飛走了,心疼不已。痛定思痛,老總又成立了幾個連鎖飯店,形成一個集群,對外提供統一標準的菜品服務,電話訂餐電話400-xxx-7777,當食客湧入飯店總台,總台將食客用大巴運到各個連鎖店,這樣食客既不需要排隊,各連鎖店都能高速運轉起來,一舉兩得,老總樂開了花,並為此種運作模式起名為「反向代理」(Reverse Proxy)。

nginx 基礎配置

好了,了解了 nginx 的一些概念之後,我們要開始切入今天的主題,"ngix 的基礎配置",安裝好 nginx 配置之後,你對 nginx 的配置都寫在 nginx.conf 的文件里,從 nginx 的配置指令作用域來講,我們分為 5 個作用域塊,分別是:

  • 全局作用域塊
  • event 作用域塊
  • http 指令作用域塊
  • server 指令作用域塊
  • location 指令作用域塊

在 "全局作用域塊" 作用域塊中配置通用的nginx 配置,比如 nginx 的用戶組信息,nginx 的並發進程數,日誌存放位置等,nginx 的用戶組信息配置,用來控制啟動 nginx 的許可權,服務並發一般情況下是越多越好,但是當超過硬體的承受範圍時會適得其反,所以一般我們會配置為 auto,這樣 nginx 會去檢查硬體的信息,啟用適當的進程數量.

日誌存放位置你也可以配置在 http 作用域塊,"http 作用域塊"作用域通常是配置請求相關的內容,比如數據的傳輸,對同一個介面的請求次數上線,配置請求的潮濕時間,還有是否要對請求進行 gzip 壓縮等.在之前講 web性能優化的時候,我記得和大家講過 gzip 壓縮是提高 web 性能優化的一種手段,gzip 能對 http 請求的請求頭和請求體進行壓縮,從而達到優化.但是不是所有的請求都要去壓縮,有些壓縮之後的請求體積可能會更大,從而達不到壓縮的效果.那怎麼辦呢,在 nginx 的配置中,你可以進行配置,設置當請求大於一定值的時候,才觸發 gzip 壓縮 gzip 的內容這裡就深入講解了,想要了解的同學可以去谷歌下,或則在下次 nginx 的高級配置的分享的時候我們再來細講.

在 event 模塊我們通常會配置進程的連接數量,就是每一個worker進程能並發處理(發起)的最大連接數.在 "server 指令作用域塊" 我們可以進行獨立項目的代理配置,

一個 http 指令中可以包含多個 server ,每一個 server 你可以看做是一個虛擬機,部署過網站的同學應該知道,若果你沒有做代理,你的伺服器只能部署一個項目的內容,默認是80埠,使用代理,能將客戶端的請求根據埠作為區分,發散到不同的項目中.nginx 這一點,能讓我們更好的利用伺服器資源

在server 指令中,我們同樣可以配置多個 location 指令,location 指令能將我們的字元串請求解析到對應的IP和埠,從而去獲取正確的資源,location 也可以進行特殊配置,定製 網站的 404 ,500 等頁面.

nginx 的項目配置示例

我們簡單的看下,我目前使用到的兩個項目的 nginx 配置,在fengdai_pc 項目中我們通過 listen 來配置項目監聽埠,通過 root 來配置前端項目文件的地址,我們還通過 location 來配置了幾個模塊代理,account 和 funds ,定製了 404 頁面,在 另一個 nginx 配置項目中我們做了https 配置,配置了域名 baibatianpc.com,並且指定了證書的位置,這樣配置後,我們能通過 訪問 baibatianpc.com/ 來查看我們的項目.這裡對於如何搭建 https 環境就不細講了,不同的開發系統證書的獲取和配置方式也不太一樣,想要深入了解的同學繼續谷歌.

複習

好了,我們今天講了nginx 的基礎配置,我們現在來複習一下,我們今天講的知識點有哪些

  1. nginx 常用的功能的概念,負載均衡,反向代理
  2. nginx 指令配置的5個作用域空間
  3. nginx 的每個配置作用域的基礎配置項目
  4. 簡單的兩個項目配置示例

你都掌握了嗎

推薦閱讀:

【LNMP】配置二級域名
Ubuntu上使用letsencrypt獲得免費的HTTPS證書
nginx為什麼性能這麼優越?
基於ReactRouter實現的SPA應用的Nginx配置
給小白的 Nginx 30分鐘入門指南

TAG:前端開發 | 前端入門 | Nginx |