探討:Nginx到底能做什么?
隨著現(xiàn)在軟件行業(yè)分工的細(xì)化,研發(fā)同學(xué)更關(guān)注研發(fā)的功能,對(duì)一些常見的運(yùn)維部署不是那么熟悉,例如常常用到的nginx、docker等等。
今天先來(lái)看看nginx可以在項(xiàng)目中做些什么?
注意:本文主要討論nginx在不加載第三方模塊的情況下。
nginx目錄
首先看下nginx安裝后的目錄(以windows為例),如下圖

一般只需關(guān)注conf文件夾中的nginx.conf文件即可,如果啟動(dòng)有問(wèn)題,可以去logs文件夾查看相關(guān)日志,nginx.exe為啟動(dòng)程序入口。
HTTP服務(wù)器
Nginx本身也是一個(gè)靜態(tài)資源的服務(wù)器,當(dāng)只有靜態(tài)資源的時(shí)候,就可以使用Nginx來(lái)做服務(wù)器。如下圖
啟動(dòng)nginx,根據(jù)上圖的監(jiān)聽端口,如下
listen 80;
server_name localhost;
可以直接訪問(wèn)localhost來(lái)訪問(wèn)html/index.html,請(qǐng)求結(jié)果如下:
另外nginx可以將靜態(tài)資源和動(dòng)態(tài)資源分離,如下圖

因此nginx常常做靜態(tài)資源服務(wù)器或者將動(dòng)靜資源分離。
反向代理
反向代理應(yīng)該是Nginx做的最多的一件事了,什么是反向代理呢?為什么需要反向代理服務(wù)器呢?
反向代理(Reverse Proxy)方式是指以代理服務(wù)器來(lái)接受internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)反向代理服務(wù)器。
簡(jiǎn)單來(lái)說(shuō)就是真實(shí)的服務(wù)器不能直接被外部網(wǎng)絡(luò)訪問(wèn),所以需要一臺(tái)代理服務(wù)器,而代理服務(wù)器能被外部網(wǎng)絡(luò)訪問(wèn)的同時(shí)又跟真實(shí)服務(wù)器在同一個(gè)網(wǎng)絡(luò)環(huán)境,當(dāng)然也可能是同一臺(tái)服務(wù)器,端口不同而已。如下圖:

配置如下:

負(fù)載均衡
負(fù)載均衡也是Nginx常用的一個(gè)功能,負(fù)載均衡就是將請(qǐng)求分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,一般來(lái)說(shuō)一個(gè)服務(wù)通常會(huì)有多臺(tái)實(shí)例運(yùn)行,因此負(fù)載均衡是非常常用的。
nginx常用3種負(fù)載均衡策略:RR(輪詢)、ip_hash(每個(gè)請(qǐng)求按訪問(wèn)ip的hash結(jié)果分配)、權(quán)重,配置如下
RR:
ip_hash:

權(quán)重:
正向代理
正向代理,意思是一個(gè)位于客戶端和原始服務(wù)器之間的服務(wù)器,常常為了從原始服務(wù)器取得內(nèi)容,客戶端需要向代理發(fā)送一個(gè)請(qǐng)求并指定原始服務(wù)器,然后代理服務(wù)器向原始服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶端。常常正向代理是解決的是客戶端無(wú)法訪問(wèn)外網(wǎng)ip或者默寫特定的ip地址而設(shè)置的,如下圖

注意:正向代理,代理的是客戶端;反向代理,代理的是服務(wù)端。本質(zhì)不同。
配置如下:
nginx還有很多第三方模塊,讓其功能更加強(qiáng)大,明天給大家分享下,如何通過(guò)nginx和openresty動(dòng)態(tài)封殺異常IP