nginx是由俄羅斯第二大訪問網站公司於2004年開發的一款高效的web服務器和反向代理服務器開源軟件。它相比於apache有佔用資源少,併發量大,輕量級等優點。
工作模式: 單進程模式和多進程模式。
1:單進程模式,Nginx啓動運行兩個進程,一個以root身份運行,一個以指定用戶身份運行。後一個進程處理用戶的請求,並且是單線程的工作方式。
2:多進程模式,啓動運行多個進程,一個以root身份運行,其他以指定用戶身份運行,並且每個進程都有多個線程。
Nginx的模塊分爲三大類: Handlers模塊 Filter模塊和Proxy模塊.Nginx內核模塊非常輕量級,主要用來處理極簡單的工作,內核將請求交給其他模塊處理。Nignx所有的模塊都靜態編譯,在啓動時自動加載。而apache則是在配置文件中指定需要加載的模塊,在處理相應的請求時再將對應的模塊加載。
Nginx單線程仍然比apache多進程多線程處理請求快的原理:首先,apache處理請求時爲一個線程對應一個請求,對應比爲1:1,這樣當請求量非常大時,基本上內存資源全部被佔用,當客戶端網絡帶寬受限時,服務器會非常的慢。而Nginx採用的是事件驅動模型,即將請求分爲阻塞型請求和非阻塞型請求,主線程只處理非阻塞型請求。當遇到阻塞型請求時,使用epoll函數將該請求轉移。這樣做的好處是主線程可以一直處理響應快的請求,使服務器處理請求的速度大大提高。
Nginx可以用來做負載均衡。通過指令upstream{}在主配置文件中設置。負載均衡的後臺服務器調度算法有:
輪詢調度:即按分發請求的時間先後來對請求進行轉發。
wigth權值調度:按照各個服務器設置的權值進行請求分發。
Ip_hash基於IP地址的hash函數調度:將每個Ip地址求hash函數值對應相應的服務器來對請求進行分發。
url_hash基於url地址的hash函數調度:將url求hash函數對應服務器對請求進行分發。
Nginx主配置文件的指令:
event{ } 主要設置工作模式
http{ } 對Nginx進行全局設置。
Server{} 對具體的服務器進行設置
location{} 對相應的url進行細粒度配置。
安裝Nginx:
下載Pcre軟件包,nginx軟件包和Md5軟件包。
解壓pcre庫和md5庫. 解壓nginx包 在configure配置時將解壓的目錄在配置參數中指定。
make && make install.