Nginx 極簡入門教程!

上篇文章和你們聊了 Spring Session 實現 Session 共享的問題,有的小夥伴看了後表示對 Nginx 仍是很懵,所以有了這篇文章,算是一個 Nginx 掃盲入門吧!nginx

基本介紹

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

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

Nginx 特色是佔有內存少,併發能力強。瀏覽器

事實上 nginx 的併發能力確實在同類型的網頁服務器中表現較好,通常來講,若是咱們在項目中引入了 Nginx ,咱們的項目架構多是這樣:bash

在這樣的架構中 , 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 有一個基本的認知。本文先說到這裏,有問題歡迎留言討論。

關注公衆號【江南一點雨】,專一於 Spring Boot+微服務以及先後端分離等全棧技術,按期視頻教程分享,關注後回覆 Java ,領取鬆哥爲你精心準備的 Java 乾貨!

相關文章
相關標籤/搜索