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

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

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

配置如下:

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

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

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