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

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

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

配置如下:
負載均衡
負載均衡也是Nginx常用的一個功能,負載均衡就是將請求分攤到多個操作單元上進行執(zhí)行,一般來說一個服務通常會有多臺實例運行,因此負載均衡是非常常用的。
nginx常用3種負載均衡策略:RR(輪詢)、ip_hash(每個請求按訪問ip的hash結(jié)果分配)、權(quán)重,配置如下
RR:
ip_hash:

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

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
































