什么是nginx如筛?
Nginx("engine x")是一款是由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開發(fā)高性能的Web和反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器午绳。
在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品映之。
nginx服務(wù)器基本特征
- 處理靜態(tài)文件拦焚,索引文件以及自動(dòng)索引蜡坊;打開文件描述符緩沖
- 無緩存的反向代理加速,簡單的負(fù)載均衡和容錯(cuò)
- FastCGI赎败,簡單的負(fù)載均衡和容錯(cuò)
- 模塊化的結(jié)構(gòu)秕衙。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或 其它代理服務(wù)器處理單頁中存在的多個(gè)SSI僵刮,則這項(xiàng)處理可以并行運(yùn)行据忘,而不需要相互等待
- 支持SSL 和 TLSSNI
nginx常用功能
1、Http代理搞糕,反向代理:作為web服務(wù)器最常用的功能之一勇吊,尤其是反向代理。
Nginx在做反向代理時(shí)窍仰,提供性能穩(wěn)定汉规,并且能夠提供配置靈活的轉(zhuǎn)發(fā)功能。Nginx可以根據(jù)不同的正則匹配驹吮,采取不同的轉(zhuǎn)發(fā)策略针史,比如圖片文件結(jié)尾的走文件服務(wù)器,動(dòng)態(tài)頁面走web服務(wù)器碟狞,只要你正則寫的沒問題啄枕,又有相對(duì)應(yīng)的服務(wù)器解決方案,你就可以隨心所欲的玩族沃。并且Nginx對(duì)返回結(jié)果進(jìn)行錯(cuò)誤頁跳轉(zhuǎn)频祝,異常判斷等。如果被分發(fā)的服務(wù)器存在異常竭业,他可以將請(qǐng)求重新轉(zhuǎn)發(fā)給另外一臺(tái)服務(wù)器智润,然后自動(dòng)去除異常服務(wù)器。
2未辆、負(fù)載均衡
Nginx的負(fù)載均衡是通過upstream實(shí)現(xiàn)的窟绷。
eg.
upstream test.aaa {
ip_hash; ## 調(diào)度算法
server 192.168.1.10:80;
server 192.168.1.11:80 down;
server 192.168.1.12:8009 max_fails=3 fail_timeout=20s;
server 192.168.1.13:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://test.aaa;
}
}
upstream 支持的負(fù)載均衡算法:
- 輪詢(默認(rèn))
每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端某臺(tái)服務(wù)器宕機(jī)咐柜,故障系統(tǒng)被自動(dòng)剔除兼蜈,使用戶訪問不受影響。
- weight
指定輪詢幾率拙友,weight和訪問比率成正比为狸,用于后端服務(wù)器性能不均的情況。
- fair(第三方)
按后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求遗契,響應(yīng)時(shí)間短的優(yōu)先分配辐棒。Nginx本身是不支持fair的,如果需要使用這種調(diào)度算法,必須下載Nginx的upstream_fair模塊漾根。
- url_hash(第三方)
按訪問URL的hash結(jié)果來分配請(qǐng)求泰涂,使每個(gè)URL定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較適用辐怕。另外逼蒙,在upstream中加入hash語句后,server語句不能寫入weight等其他參數(shù)寄疏。Nginx本身是不支持url_hash的是牢,如果需要使用這種調(diào)度算法,必須安裝Nginx 的hash軟件包陕截。
upstream 支持的狀態(tài)參數(shù)
- down驳棱,表示當(dāng)前的server暫時(shí)不參與負(fù)載均衡。
- backup艘策,預(yù)留的備份機(jī)器蹈胡。當(dāng)其他所有的非backup機(jī)器出現(xiàn)故障或者忙的時(shí)候,才會(huì)請(qǐng)求backup機(jī)器朋蔫,因此這臺(tái)機(jī)器的壓力最輕。
- max_fails却汉,允許請(qǐng)求失敗的次數(shù)驯妄,默認(rèn)為1。當(dāng)超過最大次數(shù)時(shí)合砂,返回proxy_next_upstream 模塊定義的錯(cuò)誤青扔。
- fail_timeout,在經(jīng)歷了max_fails次失敗后翩伪,暫停服務(wù)的時(shí)間微猖。max_fails可以和fail_timeout一起使用。
注缘屹,當(dāng)負(fù)載調(diào)度算法為ip_hash時(shí)凛剥,后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)不能是weight和backup。
3轻姿、web緩存
Nginx可以對(duì)不同的文件做不同的緩存處理犁珠,配置靈活,并且支持FastCGI_Cache互亮,主要用于對(duì)FastCGI的動(dòng)態(tài)程序進(jìn)行緩存犁享。配合著第三方的ngx_cache_purge,對(duì)制定的URL緩存內(nèi)容可以的進(jìn)行增刪管理豹休。
經(jīng)典前端面試題每日更新炊昆,歡迎參與討論,地址:https://github.com/daily-interview/fe-interview。
更多angular1/2/4/5凤巨、ionic1/2/3屏积、react、vue磅甩、微信小程序炊林、nodejs等技術(shù)文章、視頻教程和開源項(xiàng)目卷要,請(qǐng)關(guān)注微信公眾號(hào)——全棧弄潮兒渣聚。