Nginx 極簡入門教程!
基本介紹
Nginx 是一個(gè)高性能的 HTTP 和反向代理 web 服務(wù)器,同時(shí)也提供了 IMAP/POP3/SMTP 服務(wù)。
Nginx 是由伊戈?duì)枴べ愃饕驗(yàn)槎砹_斯訪問量第二的 Rambler.ru 站點(diǎn)開發(fā)的,第一個(gè)公開版本 0.1.0 發(fā)布于 2004 年 10 月 4 日。
Nginx 特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng)。
事實(shí)上 nginx 的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,一般來說,如果我們?cè)陧?xiàng)目中引入了 Nginx ,我們的項(xiàng)目架構(gòu)可能是這樣:

在這樣的架構(gòu)中 , Nginx 所代表的角色叫做負(fù)載均衡服務(wù)器或者反向代理服務(wù)器,所有請(qǐng)求首先到達(dá) Nginx 上,再由 Nginx 根據(jù)提前配置好的轉(zhuǎn)發(fā)規(guī)則,將客戶端發(fā)來的請(qǐng)求轉(zhuǎn)發(fā)到某一個(gè) Tomcat 上去。
那么這里涉及到兩個(gè)概念:
負(fù)載均衡服務(wù)器
就是進(jìn)行請(qǐng)求轉(zhuǎn)發(fā),降低某一個(gè)服務(wù)器的壓力。負(fù)載均衡策略很多,也有很多層,對(duì)于一些大型網(wǎng)站基本上從 DNS 就開始負(fù)載均衡,負(fù)載均衡有硬件和軟件之分,各自代表分別是 F5 和 Nginx (目前 Nginx 已經(jīng)被 F5 收購),早些年,也可以使用 Apache 來做負(fù)載均衡,但是效率不如 Nginx ,所以現(xiàn)在主流方案是 Nginx 。
反向代理服務(wù)器:
另一個(gè)概念是反向代理服務(wù)器,要說反向代理,得先說正向代理,看下面一張圖:

在這個(gè)過程中,Google 并不知道真正訪問它的客戶端是誰,它只知道這個(gè)中間服務(wù)器在訪問它。因此,這里的代理,實(shí)際上是中間服務(wù)器代理了客戶端,這種代理叫做正向代理。
那么什么是反向代理呢?反向代理有點(diǎn)類似于大家打 10086 客服,看下面一張圖:

在這個(gè)過程中,10086 這個(gè)號(hào)碼相當(dāng)于是一個(gè)代理,真正提供服務(wù)的,是話務(wù)員,但是對(duì)于客戶來說,他不關(guān)心到底是哪一個(gè)話務(wù)員提供的服務(wù),他只需要記得 10086 這個(gè)號(hào)碼就行了。
所有的請(qǐng)求打到 10086 上,再由 10086 將請(qǐng)求轉(zhuǎn)發(fā)給某一個(gè)話務(wù)員去處理。因此,在這里,10086 就相當(dāng)于是一個(gè)代理,只不過它代理的是話務(wù)員而不是客戶端,這種代理稱之為反向代理。
Nginx 的優(yōu)勢
在 Java 開發(fā)中,Nginx 有著非常廣泛的使用,隨便舉幾點(diǎn):
使用 Nginx 做靜態(tài)資源服務(wù)器:Java 中的資源可以分為動(dòng)態(tài)和靜態(tài),動(dòng)態(tài)需要經(jīng)過 Tomcat 解析之后,才能返回給瀏覽器,例如 JSP 頁面、Freemarker 頁面、控制器返回的 JSON 數(shù)據(jù)等,都算作動(dòng)態(tài)資源,動(dòng)態(tài)資源經(jīng)過了 Tomcat 處理,速度必然降低。對(duì)于靜態(tài)資源,例如圖片、HTML、JS、CSS 等資源,這種資源可以不必經(jīng)過 Tomcat 解析,當(dāng)客戶端請(qǐng)求這些資源時(shí),之間將資源返回給客戶端就行了。此時(shí),可以使用 Nginx 搭建靜態(tài)資源服務(wù)器,將靜態(tài)資源直接返回給客戶端。
使用 Nginx 做負(fù)載均衡服務(wù)器,無論是使用 Dubbo 還是 Spirng Cloud ,除了使用各自自帶的負(fù)載均衡策略之外,也都可以使用 Nginx 做負(fù)載均衡服務(wù)器。
支持高并發(fā)、內(nèi)存消耗少、成本低廉、配置簡單、運(yùn)行穩(wěn)定等。
Nginx 安裝
由于基本上都是在 Linux 上使用 Nginx,因此松哥這里主要向大家展示 CentOS 7 安裝 Nginx:
首先下載 Nginx
wget http://nginx.org/download/nginx-1.17.0.tar.gz
然后解壓下載的目錄,進(jìn)入解壓目錄中,在編譯安裝之前,需要安裝兩個(gè)依賴:
yum -y install pcre-devel
yum -y install openssl openssl-devel
然后開始編譯安裝:
./configure
make
make install
裝好之后,默認(rèn)安裝位置在 :
/usr/local/nginx/sbin/nginx
進(jìn)入到該目錄的 sbin 目錄下,執(zhí)行 nginx 即可啟動(dòng) Nginx :

Nginx 啟動(dòng)成功之后,在瀏覽器中直接訪問 Nginx 地址:

看到如上頁面,表示 Nginx 已經(jīng)安裝成功了。
如果修改了 Nginx 配置,則可以通過如下命令重新加載 Nginx 配置文件:
./nginx -s reload
總結(jié)
本文算是一個(gè)簡單的 Nginx 掃盲文,希望大家看完后對(duì) Nginx 有一個(gè)基本的認(rèn)知。本文先說到這里,有問題歡迎留言討論。
喜歡就點(diǎn)下“贊”、"在看"呀
關(guān)注 Stephen,一起學(xué)習(xí),一起成長。
