一浓恳、Nginx概念
Nginx是一個高性能的http和反向代理服務器,特點是占用內(nèi)存少称开,并發(fā)能力強八毯,事實上Nginx的并發(fā)能力確實在同類型的網(wǎng)頁服務器中表現(xiàn)較好
Nginx專為性能優(yōu)化而開發(fā),性能就是其最重要的考量焙蚓,實現(xiàn)上非常注重效率纹冤,能經(jīng)受高負載的考驗,有報告表明能支持高達50000個并發(fā)連接數(shù)
二购公、Nginx配置文件
第一部分全局塊
從配置文件開始到events之間的內(nèi)容萌京,主要會設(shè)置一些影響Nginx服務器整體運行的配置指令,比如worker_processes 1宏浩; worker_processes值越大知残,可以支持的并發(fā)處理量越多
第二部分events塊
events塊涉及的指令主要影響Nginx服務器與用戶的網(wǎng)絡連接,比如worker_connections 1024; 支持的最大連接數(shù)
第三部分http全局塊
http全局配置的指令包括文件引入比庄、mime-type定義求妹,日志自定義,連接超時時間佳窑,單連接請求數(shù)上限制恍,server塊等
三、反向代理
1神凑、正向代理
在客戶端(瀏覽器)配置代理服務器净神,通過代理服務器進行互聯(lián)網(wǎng)訪問
2、反向代理
我們只需要將請求發(fā)送到代理服務器耙厚,有反向代理服務器去選擇目標服務器獲取數(shù)據(jù)后强挫,再返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器薛躬,暴露的是代理服務器地址俯渤,隱藏了真實服務器IP地址
配置方式
方式一
方式二指定location規(guī)則代理
四、負載均衡
增加服務器的數(shù)量,然后將請求分發(fā)到各個服務器上阶界,將原先請求集中到單個服務器上的情況改為將請求分發(fā)到多個服務器上,將負載分發(fā)到不同的服務器欢峰,也就是我們所說的負載均衡
1梨树、配置兩臺服務器負載
2坑夯、Nginx分配服務器策略
輪詢(默認)
每個請求按照時間順序逐一分配到不同的后端服務器,如果后端服務器down掉抡四,能自動剔除
weight
weight代表權(quán)重默認為1柜蜈,權(quán)重越高被分配的客戶端越多
指定輪詢幾率,weight和訪問比率成正比指巡,用于后端服務器性能不均的情況
ip_hash
每個請求按訪問ip的hash結(jié)果分配淑履,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題
fair(第三方)
按照后端服務器的響應時間來分配請求藻雪,響應時間短的優(yōu)先分配
五秘噪、動靜分離
Nginx動靜就是動態(tài)請求和靜態(tài)請求分開,減輕動態(tài)服務器的壓力
方式一
Nginx配置location規(guī)則處理靜態(tài)請求勉耀,可以設(shè)置expires靜態(tài)資源緩存時間
autoindex 列出文件目錄
方式二
配置靜態(tài)服務器和動態(tài)服務器分開請求
六指煎、高可用
一臺代理服務可能出現(xiàn)down機導致服務不可用,無法保證高可用
高可用架構(gòu)配置多臺服務器比如兩臺服務器一臺正常使用一臺用來備份便斥,通過keepalived 心跳機制進行監(jiān)控當主的服務器down掉立即啟用備份服務器保證服務的高可用
安裝keepalived 配置keepalived.conf 添加檢測腳本 綁定網(wǎng)卡配置虛擬ip
七至壤、Nginx原理
1、工作模式master和worker
2椭住、一個master和多個workers的機制好處崇渗?
①可以使用nginx -s reload 熱部署,利于nginx熱部署操作
②每個worker是獨立的進程京郑,如果有其中一個worker出現(xiàn)問題宅广,其他worker獨立的繼續(xù)進行爭搶,實現(xiàn)請求過程些举,不會造成服務中斷
需要設(shè)置多少個worker
nginx同redis類似都采用了io多路復用機制跟狱,每個worker都是一個獨立的進程,但每個進程里只有一個主線程户魏,通過異步非阻塞的方式來處理請求驶臊,即使是成千上萬個請求也不再話下。每個worker的線程可以把一個cpu的性能發(fā)揮到極致
所以worker數(shù)和服務器的cpu數(shù)相等是最為適宜的叼丑。少了浪費cup关翎,多了會造成cpu頻繁切換上下文帶來消耗
3、連接數(shù)worker_connection
①發(fā)送請求鸠信,占用了worker的幾個連接數(shù)纵寝?
2個或者4個
②nginx有一個master,有四個worker星立,每個worker支持最大的連接數(shù)1024爽茴,支持最大的并發(fā)數(shù)是多少葬凳?
普通的靜態(tài)訪問最大并發(fā)數(shù)是:worker_connection * worker_processes / 2
如果是http做反向代理最大并發(fā)數(shù)是worker_connection * worker_processes / 4