上篇文章和大家聊了 Spring Session 實現(xiàn) Session 共享的問題,,有的小伙伴看了后表示對 Nginx 還是很懵,因此有了這篇文章,,算是一個 Nginx 掃盲入門吧,! 基本介紹Nginx 是一個高性能的 HTTP 和反向代理 web 服務器,同時也提供了 IMAP/POP3/SMTP 服務,。
Nginx 是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的 Rambler.ru 站點開發(fā)的,,第一個公開版本 0.1.0 發(fā)布于 2004 年 10 月 4 日。
Nginx 特點是占有內存少,,并發(fā)能力強。
事實上 nginx 的并發(fā)能力確實在同類型的網(wǎng)頁服務器中表現(xiàn)較好,,一般來說,,如果我們在項目中引入了 Nginx ,我們的項目架構可能是這樣: 在這樣的架構中 ,, Nginx 所代表的角色叫做負載均衡服務器或者反向代理服務器,,所有請求首先到達 Nginx 上,再由 Nginx 根據(jù)提前配置好的轉發(fā)規(guī)則,,將客戶端發(fā)來的請求轉發(fā)到某一個 Tomcat 上去,。 那么這里涉及到兩個概念: 就是進行請求轉發(fā),降低某一個服務器的壓力,。負載均衡策略很多,,也有很多層,對于一些大型網(wǎng)站基本上從 DNS 就開始負載均衡,,負載均衡有硬件和軟件之分,,各自代表分別是 F5 和 Nginx (目前 Nginx 已經(jīng)被 F5 收購),早些年,,也可以使用 Apache 來做負載均衡,,但是效率不如 Nginx ,所以現(xiàn)在主流方案是 Nginx ,。 另一個概念是反向代理服務器,,要說反向代理,得先說正向代理,,看下面一張圖: 在這個過程中,,Google 并不知道真正訪問它的客戶端是誰,,它只知道這個中間服務器在訪問它。因此,,這里的代理,,實際上是中間服務器代理了客戶端,這種代理叫做正向代理,。 那么什么是反向代理呢,?反向代理有點類似于大家打 10086 客服,看下面一張圖: 在這個過程中,,10086 這個號碼相當于是一個代理,,真正提供服務的,是話務員,,但是對于客戶來說,,他不關心到底是哪一個話務員提供的服務,他只需要記得 10086 這個號碼就行了,。 所有的請求打到 10086 上,,再由 10086 將請求轉發(fā)給某一個話務員去處理。因此,,在這里,,10086 就相當于是一個代理,只不過它代理的是話務員而不是客戶端,,這種代理稱之為反向代理,。 Nginx 的優(yōu)勢在 Java 開發(fā)中,Nginx 有著非常廣泛的使用,,隨便舉幾點: 使用 Nginx 做靜態(tài)資源服務器:Java 中的資源可以分為動態(tài)和靜態(tài),,動態(tài)需要經(jīng)過 Tomcat 解析之后,才能返回給瀏覽器,,例如 JSP 頁面,、Freemarker 頁面、控制器返回的 JSON 數(shù)據(jù)等,,都算作動態(tài)資源,,動態(tài)資源經(jīng)過了 Tomcat 處理,速度必然降低,。對于靜態(tài)資源,,例如圖片、HTML,、JS,、CSS 等資源,這種資源可以不必經(jīng)過 Tomcat 解析,當客戶端請求這些資源時,,之間將資源返回給客戶端就行了,。此時,可以使用 Nginx 搭建靜態(tài)資源服務器,,將靜態(tài)資源直接返回給客戶端,。 使用 Nginx 做負載均衡服務器,無論是使用 Dubbo 還是 Spirng Cloud ,,除了使用各自自帶的負載均衡策略之外,,也都可以使用 Nginx 做負載均衡服務器。 支持高并發(fā),、內存消耗少,、成本低廉、配置簡單,、運行穩(wěn)定等,。
Nginx 安裝由于基本上都是在 Linux 上使用 Nginx,因此松哥這里主要向大家展示 CentOS 7 安裝 Nginx: 首先下載 Nginx
wget http:///download/nginx-1.17.0.tar.gz
然后解壓下載的目錄,,進入解壓目錄中,,在編譯安裝之前,需要安裝兩個依賴: yum -y install pcre-devel
yum -y install openssl openssl-devel
然后開始編譯安裝: ./configure
make
make install
裝好之后,,默認安裝位置在 : /usr/local/nginx/sbin/nginx
進入到該目錄的 sbin 目錄下,,執(zhí)行 nginx 即可啟動 Nginx : Nginx 啟動成功之后,在瀏覽器中直接訪問 Nginx 地址: 看到如上頁面,,表示 Nginx 已經(jīng)安裝成功了。 如果修改了 Nginx 配置,,則可以通過如下命令重新加載 Nginx 配置文件:
|