基本介紹
Nginx
是一個高性能的
HTTP
和反向代理
web
伺服器,同時也提供了
IMAP/POP3/SMTP
服務。
Nginx
是由伊戈爾·賽索耶夫為俄羅斯通路量第二的
Rambler.ru
站點開發的,第一個公開版本
0.1.0
釋出于
2004
年
10
月
4
日。
Nginx
特點是占有記憶體少,并發能力強。
事實上
nginx
的并發能力确實在同類型的網頁伺服器中表現較好,一般來說,如果我們在項目中引入了
Nginx
,我們的項目架構可能是這樣:

在這樣的架構中 ,
Nginx
所代表的角色叫做負載均衡伺服器或者反向代理伺服器,所有請求首先到達
Nginx
上,再由
Nginx
根據提前配置好的轉發規則,将用戶端發來的請求轉發到某一個
Tomcat
上去。
那麼這裡涉及到兩個概念:
- 負載均衡伺服器
就是進行請求轉發,降低某一個伺服器的壓力。負載均衡政策很多,也有很多層,對于一些大型網站基本上從
DNS
就開始負載均衡,負載均衡有硬體和軟體之分,各自代表分别是
F5
和
Nginx
(目前
Nginx
已經被
F5
收購),早些年,也可以使用
Apache
來做負載均衡,但是效率不如
Nginx
,是以現在主流方案是
Nginx
。
- 反向代理伺服器:
另一個概念是反向代理伺服器,得先說正向代理,看下面一張圖:
在這個過程中,Google 并不知道真正通路它的用戶端是誰,它隻知道這個中間伺服器在通路它。是以,這裡的代理,實際上是中間伺服器代理了用戶端,這種代理叫做正向代理。
那麼什麼是反向代理呢?看下面一張圖:
在這個過程中,10086 這個号碼相當于是一個代理,真正提供服務的,是話務員,但是對于客戶來說,他不關心到底是哪一個話務員提供的服務,他隻需要記得 10086 這個号碼就行了。
所有的請求打到 10086 上,再由 10086 将請求轉發給某一個話務員去處理。是以,在這裡,10086 就相當于是一個代理,隻不過它代理的是話務員而不是用戶端,這種代理稱之為反向代理。
Nginx 的優勢
在 Java 開發中,Nginx 有着非常廣泛的使用,随便舉幾點:
- 使用 Nginx 做 靜态資源伺服器 :Java 中的資源可以分為動态和靜态,動态需要經過 Tomcat 解析之後,才能傳回給浏覽器,例如 JSP 頁面、Freemarker 頁面、控制器傳回的 JSON 資料等,都算作動态資源,動态資源經過了 Tomcat 處理,速度必然降低。對于靜态資源,例如圖檔、HTML、JS、CSS 等資源,這種資源可以不必經過 Tomcat 解析,當用戶端請求這些資源時,之間将資源傳回給用戶端就行了。此時,可以使用 Nginx 搭建靜态資源伺服器,将靜态資源直接傳回給用戶端。
- 使用 Nginx 做負載均衡伺服器,無論是使用 Dubbo 還是 Spirng Cloud ,除了使用各自自帶的負載均衡政策之外,也都可以使用 Nginx 做負載均衡伺服器。
- 支援高并發、記憶體消耗少、成本低廉、配置簡單、運作穩定等。
Nginx 安裝:
由于基本上都是在 Linux 上使用 Nginx,是以松哥這裡主要向大家展示 CentOS 7 安裝 Nginx:
- 首先下載下傳 Nginx
然後解壓下載下傳的目錄,進入解壓目錄中,在編譯安裝之前,需要安裝兩個依賴:
然後開始編譯安裝:
裝好之後,預設安裝位置在 :
進入到該目錄的
sbin
目錄下,執行
nginx
即可啟動
Nginx
:
Nginx 啟動成功之後,在浏覽器中直接通路 Nginx 位址:
看到如上頁面,表示 Nginx 已經安裝成功了。
如果修改了 Nginx 配置,則可以通過如下指令重新加載 Nginx 配置檔案:
總結
本文算是一個簡單的 Nginx 掃盲文,希望大家看完後對 Nginx 有一個基本的認知