前端須要知道的Nginx入門知識

Nginx簡介

Nginx是一個高性能的HTTP和反向代理服務器,具備高併發、穩定、支持熱部署等特色。咱們經常使用它來進行負載均衡、反向代理和緩存HTTP請求等。html

Nginx架構

Nginx選擇的進程模型和事件模型與前端開發者熟知的nodejs很類似,都是採用異步非阻塞的方式。Nginx在啓動後會開啓一個master進程和多個worker進程。其中惟一的master進程的主要做用是用來管理下面的多個worker進程,它並不參與具體的事件處理過程。而這多個worker進程之間是平等的關係,他們獨立地競爭來自客戶端的請求且同一個請求只能在某一個worker進程中被處理。下面一張圖能夠形象說明:前端

在這裏插入圖片描述

這裏能夠認爲master進程是整個程序的入口,全部的請求都經它手,再分配給下面的worker進程。另外master進程能夠管理worker的狀態,當某個worker進程掛掉後,master進程須要關掉它並重啓一個。node

Nginx的高併發性就得益於這種進程模型。但有些傳統開發者這時就會產生一個疑問:當master手下的worker進程都在工做時,新進來的請求不就沒地方處理了嗎?這樣何來高併發呢?其實這個問題的答案就是異步非阻塞。以往咱們處理一個請求時,須要接受數據,而後進行i/o處理後再返回數據,期間這個i/o操做就佔用了大部分的時間。而Nginx的異步非阻塞方式就是當發生i/o阻塞時,worker進程就去處理其餘沒有阻塞的事件。而這個阻塞完成後再以異步的方式通知到worker進程。至關於準備好的事件源源不斷地進入隊列來等待worker進程處理,而worker進程也能夠節省等待i/o阻塞的時間。nginx

所以,通常推薦nginx設置worker的個數爲CPU的核數,這樣一個CPU對應一個worker進程,不斷地去處理已準備完畢的事件,也不會出現多個進程競爭一個CPU的狀況。後端

Nginx的配置系統

瞭解了nginx的原理後,對於不是運維的同窗來講,平時咱們與nginx打交道最多的地方仍是它的配置文件。Nginx的配置系統通常由一個主配置文件nginx.conf和一些額外的輔助配置文件構成,這些配置文件都是純文本形式,位於Nginx安裝目錄的conf目錄下。 Nginx的配置文件由相似於字符串的簡單指令行和配置塊構成。對於簡單配置,指令以分號結尾,由配置指令和參數兩部分組成,例如:api

worker_processes  8
複製代碼

該指令由名爲worker_processes的指令和值爲8的參數組成,表示Nginx要開啓的worker進程個數爲8個。 除了簡單指令外,Nginx配置還包含一些由大括號括起來的複合配置塊。這些配置塊的大括號包起來的地方表示處於必定的做用域中,其中的內容通常也是一行行簡單指令。例如:跨域

http {
	charset utf-8;
}
複製代碼

表示所啓用的http服務器使用utf-8編碼。數組

Nginx經常使用的幾個配置塊有:http、server、location、upstream等。這些配置塊能夠按照必定的規則進行相互嵌套,例如若是該http服務支持多個虛擬主機,則http上下文中能夠出現多個server上下文。在平常工做中,只要咱們熟悉了經常使用的配置指令,就能夠實現大部分功能。附上查詢文檔:Nginx中文文檔nginx.conf中文詳解瀏覽器

Nginx與前端開發

做爲前端開發,掌握Nginx的基本使用方式能夠大大增強咱們的開發效率。緩存

  1. 反向代理 前端開發常常會遇到的一個問題就是訪問後端資源時出現跨域問題,跨域問題在此就不詳述,咱們知道它是因爲瀏覽器的安全資源策略而產生的。而Nginx的反向代理偏偏避開了這一點。所謂反向代理就是Nginx代替客戶端去向後端請求接口數據,而後再返回給客戶端,這樣就能避開瀏覽器的安全資源策略,配置例子:
location ^~ /api {
	proxy_pass https://test.com/;
}
複製代碼

該配置會代理path爲/api開頭的請求,並返回https://test.com/返回的數據。

  1. 負載均衡 負載均衡就是將請求平均分攤到多個服務器上,從而避免某個服務器因請求量過多而超載。例如:
upstream test {
	ip_hash;
	server 10.100.100.1;
	server 10.100.100.2;
}
location /test {
	proxy_pass http://test;
}
複製代碼

該配置表示路徑爲test的請求會根據必定的規則分配給10.100.100.1和10.100.100.2這兩臺服務器。這些規則除了該配置中的ip_hash方式,還有url_hash、指定權重方式等。

  1. 內網訪問 咱們常常會遇到某些公司資源只容許內網訪問的狀況,這時能夠經過location的deny和allow指令來簡單實現:
location / {
	allow 10.100.0.1;
	allow 10.100.0.2;
	deny all;
}
複製代碼

allow和deny指令採用從上到下優先匹配的方式,一旦匹配到就跳出。該配置表示只容許10.100.100.1和10.100.100.2這兩個ip訪問。

除了以上的幾種經常使用功能,Nginx還能夠實現圖片處理服務、壓縮數據、適配多端環境等功能。並且這些功能只須要熟練使用配置指令便可實現。

相關文章
相關標籤/搜索