nginx常用功能介绍
一、什么是nginx?
nginx是一款輕量級(jí)的Web 服務(wù)器 、反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器。主要有反向代理,負(fù)載均衡的功能。
官方網(wǎng)站為:http://nginx.org/ 。它是一款免費(fèi)開源的高性能 HTTP 代理服務(wù)器及反向代理服務(wù)器(Reverse Proxy)產(chǎn)品,同時(shí)它還可以提供 IMAP/POP3 郵件代理服務(wù)等功能。它高并發(fā)性能很好,官方測(cè)試能夠支撐 5 萬(wàn)的并發(fā)量;運(yùn)行時(shí)內(nèi)存和 CPU 占用率低,配置簡(jiǎn)單,容易上手,而且運(yùn)行非常穩(wěn)定。
http://tengine.taobao.org/ :淘寶網(wǎng)發(fā)起。
二、Nginx的常用功能
1、反向代理
這是 Nginx 服務(wù)器作為 WEB 服務(wù)器的主要功能之一,客戶端向服務(wù)器發(fā)送請(qǐng)求時(shí),會(huì)首先經(jīng)過 Nginx 服務(wù)器,由服務(wù)器將請(qǐng)求分發(fā)到相應(yīng)的 WEB 服務(wù)器。正向代理是代理客戶端,而反向代理則是代理服務(wù)器,Nginx 在提供反向代理服務(wù)方面,通過使用正則表達(dá)式進(jìn)行相關(guān)配置,采取不同的轉(zhuǎn)發(fā)策略,配置相當(dāng)靈活,而且在配置后端轉(zhuǎn)發(fā)請(qǐng)求時(shí),完全不用關(guān)心網(wǎng)絡(luò)環(huán)境如何,可以指定任意的IP地址和端口號(hào),或其他類型的連接、請(qǐng)求等。
2、負(fù)載均衡
這也是 Nginx 最常用的功能之一,負(fù)載均衡,一方面是將單一的重負(fù)載分擔(dān)到多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)上做并行處理,每個(gè)節(jié)點(diǎn)處理結(jié)束后將結(jié)果匯總返回給用戶,這樣可以大幅度提高網(wǎng)絡(luò)系統(tǒng)的處理能力;另一方面將大量的前端并發(fā)請(qǐng)求或數(shù)據(jù)流量分擔(dān)到多個(gè)后端網(wǎng)絡(luò)節(jié)點(diǎn)分別處理,這樣可以有效減少前端用戶等待相應(yīng)的時(shí)間。而 Nginx 負(fù)載均衡都是屬于后一方面,主要是對(duì)大量前端訪問或流量進(jìn)行分流,已保證前端用戶訪問效率,并可以減少后端服務(wù)器處理壓力。
3、Web 緩存
在很多優(yōu)秀的網(wǎng)站中,Nginx 可以作為前置緩存服務(wù)器,它被用于緩存前端請(qǐng)求,從而提高 Web服務(wù)器的性能。Nginx 會(huì)對(duì)用戶已經(jīng)訪問過的內(nèi)容在服務(wù)器本地建立副本,這樣在一段時(shí)間內(nèi)再次訪問該數(shù)據(jù),就不需要通過 Nginx 服務(wù)器向后端發(fā)出請(qǐng)求。減輕網(wǎng)絡(luò)擁堵,減小數(shù)據(jù)傳輸延時(shí),提高用戶訪問速度。
三、什是反向代理
反向代理和正向代理的區(qū)別就是:正向代理代理客戶端,反向代理代理服務(wù)器。
反向代理,其實(shí)客戶端對(duì)代理是無感知的,因?yàn)榭蛻舳瞬恍枰魏闻渲镁涂梢栽L問,我們只需要將請(qǐng)求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后,在返回給客戶端,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對(duì)外就是一個(gè)服務(wù)器,暴露的是代理服務(wù)器地址,隱藏了真實(shí)服務(wù)器IP地址。
理解這兩種代理的關(guān)鍵在于代理服務(wù)器所代理的對(duì)象是什么,正向代理代理的是客戶端,我們需要在客戶端進(jìn)行一些代理的設(shè)置。而反向代理代理的是服務(wù)器,作為客戶端的我們是無法感知到服務(wù)器的真實(shí)存在的。
四、什么是負(fù)載均衡?
將服務(wù)器接收到的請(qǐng)求按照規(guī)則分發(fā)的過程
weight輪詢(默認(rèn)):接收到的請(qǐng)求按照順序逐一分配到不同的后端服務(wù)器,即使在使用過程中,某一臺(tái)后端服務(wù)器宕機(jī),nginx會(huì)自動(dòng)將該服務(wù)器剔除出隊(duì)列,請(qǐng)求受理情況不會(huì)受到任何影響。 這種方式下,可以給不同的后端服務(wù)器設(shè)置一個(gè)權(quán)重值(weight),用于調(diào)整不同的服務(wù)器上請(qǐng)求的分配率;權(quán)重?cái)?shù)據(jù)越大,被分配到請(qǐng)求的幾率越大;該權(quán)重值,主要是針對(duì)實(shí)際工作環(huán)境中不同的后端服務(wù)器硬件配置進(jìn)行調(diào)整的。
ip_hash: 每個(gè)請(qǐng)求按照發(fā)起客戶端的ip的hash結(jié)果進(jìn)行匹配,這樣的算法下一個(gè)固定ip地址的客戶端總會(huì)訪問到同一個(gè)后端服務(wù)器,這也在一定程度上解決了集群部署環(huán)境下session共享的問題。
fair: 智能調(diào)整調(diào)度算法,動(dòng)態(tài)的根據(jù)后端服務(wù)器的請(qǐng)求處理到響應(yīng)的時(shí)間進(jìn)行均衡分配,響應(yīng)時(shí)間短處理效率高的服務(wù)器分配到請(qǐng)求的概率高,響應(yīng)時(shí)間長(zhǎng)處理效率低的服務(wù)器分配到的請(qǐng)求少;結(jié)合了前兩者的優(yōu)點(diǎn)的一種調(diào)度算法。但是需要注意的是nginx默認(rèn)不支持fair算法,如果要使用這種調(diào)度算法,請(qǐng)安裝upstream_fair模塊
url_hash: 按照訪問的url的hash結(jié)果分配請(qǐng)求,每個(gè)請(qǐng)求的url會(huì)指向后端固定的某個(gè)服務(wù)器,可以在nginx作為靜態(tài)服務(wù)器的情況下提高緩存效率。同樣要注意nginx默認(rèn)不支持這種調(diào)度算法,要使用的話需要安裝nginx的hash軟件包
總結(jié)
以上是生活随笔為你收集整理的nginx常用功能介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx.conf配置文件
- 下一篇: 【Flask项目】项目准备之-创建git