Spring Boot2 系列教程(二十七)Nginx 極簡掃盲入門

上篇文章和大家聊了 Spring Session 實現 Session 共享的問題,有的小夥伴看了後表示對 Nginx 還是很懵,因此有了這篇文章,算是一個 Nginx 掃盲入門吧!

基本介紹

Nginx 是一個高性能的 HTTP 和反向代理 web 服務器,同時也提供了 IMAP/POP3/SMTP 服務。

Nginx 是由伊戈爾·賽索耶夫爲俄羅斯訪問量第二的 Rambler.ru 站點開發的,第一個公開版本 0.1.0 發佈於 2004104 日。

Nginx 特點是佔有內存少,併發能力強。

事實上 nginx 的併發能力確實在同類型的網頁服務器中表現較好,一般來說,如果我們在項目中引入了 Nginx ,我們的項目架構可能是這樣:

在這樣的架構中 , Nginx 所代表的角色叫做負載均衡服務器或者反向代理服務器,所有請求首先到達 Nginx 上,再由 Nginx 根據提前配置好的轉發規則,將客戶端發來的請求轉發到某一個 Tomcat 上去。

那麼這裏涉及到兩個概念:

  • 負載均衡服務器

就是進行請求轉發,降低某一個服務器的壓力。負載均衡策略很多,也有很多層,對於一些大型網站基本上從 DNS 就開始負載均衡,負載均衡有硬件和軟件之分,各自代表分別是 F5Nginx (目前 Nginx 已經被 F5 收購),早些年,也可以使用 Apache 來做負載均衡,但是效率不如 Nginx ,所以現在主流方案是 Nginx

  • 反向代理服務器:

另一個概念是反向代理服務器,得先說正向代理,看下面一張圖:

在這個過程中,Google 並不知道真正訪問它的客戶端是誰,它只知道這個中間服務器在訪問它。因此,這裏的代理,實際上是中間服務器代理了客戶端,這種代理叫做正向代理。

那麼什麼是反向代理呢?看下面一張圖:

在這個過程中,10086 這個號碼相當於是一個代理,真正提供服務的,是話務員,但是對於客戶來說,他不關心到底是哪一個話務員提供的服務,他只需要記得 10086 這個號碼就行了。

所有的請求打到 10086 上,再由 10086 將請求轉發給某一個話務員去處理。因此,在這裏,10086 就相當於是一個代理,只不過它代理的是話務員而不是客戶端,這種代理稱之爲反向代理。

Nginx 的優勢

在 Java 開發中,Nginx 有着非常廣泛的使用,隨便舉幾點:

  1. 使用 Nginx 做靜態資源服務器:Java 中的資源可以分爲動態和靜態,動態需要經過 Tomcat 解析之後,才能返回給瀏覽器,例如 JSP 頁面、Freemarker 頁面、控制器返回的 JSON 數據等,都算作動態資源,動態資源經過了 Tomcat 處理,速度必然降低。對於靜態資源,例如圖片、HTML、JS、CSS 等資源,這種資源可以不必經過 Tomcat 解析,當客戶端請求這些資源時,之間將資源返回給客戶端就行了。此時,可以使用 Nginx 搭建靜態資源服務器,將靜態資源直接返回給客戶端。
  2. 使用 Nginx 做負載均衡服務器,無論是使用 Dubbo 還是 Spirng Cloud ,除了使用各自自帶的負載均衡策略之外,也都可以使用 Nginx 做負載均衡服務器。
  3. 支持高併發、內存消耗少、成本低廉、配置簡單、運行穩定等。

Nginx 安裝:

由於基本上都是在 Linux 上使用 Nginx,因此鬆哥這裏主要向大家展示 CentOS 7 安裝 Nginx:

  1. 首先下載 Nginx
wget http://nginx.org/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 目錄下,執行 nginx 即可啓動 Nginx

Nginx 啓動成功之後,在瀏覽器中直接訪問 Nginx 地址:

看到如上頁面,表示 Nginx 已經安裝成功了。

如果修改了 Nginx 配置,則可以通過如下命令重新加載 Nginx 配置文件:

./nginx -s reload

總結

本文算是一個簡單的 Nginx 掃盲文,希望大家看完後對 Nginx 有一個基本的認知。本文先說到這裏,有問題歡迎留言討論。

掃碼關注鬆哥,公衆號後臺回覆 2TB,獲取鬆哥獨家 超2TB 免費 Java 學習乾貨

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章