一文介紹使用Nginx(實現反向代理,負載均衡,動靜分離) -JavaEE篇

寫在前面:本文的Nginx是在Linux環境下使用的,需要掌握Linux知識和JavaWeb知識
Linux教學:
保姆級教學!Linux操作3天快速入門系列 第一天【篇一】(常用命令)
保姆級教學!Linux操作3天快速入門系列 第二天【篇二】(整合常用命令)
保姆級教學!Linux操作3天快速入門系列 第三天【篇三】(附帶CentOS7的jdk,Tomcat安裝)

作者公衆號:小白編碼

什麼是 nginx

Nginx 是高性能的 HTTP 和反向代理的服務器,處理高併發能力是十分強大的,能經受高負載的考驗 有報告表明能支持高達 50,000 個併發連接數。

Nginx安裝

1.安裝編譯工具及庫文件

yum -y install make zlib zlib-devel gcc-c ++ libtool openssl openssl-devel

2.安裝pcre包的時候提示缺少c++編譯器

使用yum安裝

yum -y install gcc-c++
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

3.安裝 pcre 依賴

  • 第一步 聯網下載 pcre 壓縮文件依賴
    wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre 8.37.tar.gz

  • 第二步 解壓壓縮文件使用命令

    tar -xvf pcre8.37.tar.gz
    
  • 進入:cd pcre-8.37

  • 第三步./configure 完成後,

  • 編譯且安裝

    make && make install
    
  • 安裝openssl 、 zlib 、 gcc依賴

    yumy install make zlib zlib devel gcc c++ libtool openssl openssl devel
    

4.安裝 nginx

  • 使用命令解壓好nginxtar
  • 進入解壓後的nginx目錄然後執行./configure
  • 編譯安裝:make && make install
  • 進入目錄 /usr/local/nginx/sbin/
  • 測試,輸入ip地址

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zR2b86Hl-1588480837994)()]

Nginx 的常用的命令

以下命令需要先進入/nginx/sbin下

首先:
cd /usr/local/nginx/sbin
1 查看 nginx 版本號
./nginx -v
2 啓動 nginx
./nginx
3 停止 nginx
./nginx -s stop
4 重新加載 nginx
./nginx -s reload

5.修改配置文件
cd /usr/local/nginx/conf/
vim nginx.conf

Nginx配置文件介紹:

配置文件地址:cd /usr/local/nginx/conf/

使用Vim可以修改vim nginx.conf

配置文件中的內容

全局塊: 配置服務器整體運行的配置指令
比如 worker_processes 1; 處理併發數的配置
events 塊 : 影響 Nginx 服務器與用戶的網絡連接
比如 worker_connections 1024; 支持的最大連接數爲 1024
http 塊:包含兩部分:http 全局塊,server 塊

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0qIXvpSN-1588480837996)()]

location 指令說明

在這裏插入圖片描述

1、= :用於不含正則表達式的 uri 前,要求請求字符串與 uri 嚴格匹配,如果匹配成功,就停止繼續向下搜索並立即處理該請求。

2、~:用於表示 uri 包含正則表達式,並且區分大小寫。

3、~:用於表示 uri 包含正則表達式,並且不區分大小寫。

4、^~:用於不含正則表達式的 uri 前,要求 Nginx 服務器找到標識 uri 和請求字符串匹配度最高的 location 後,立即使用此 location 處理請求,而不再使用 location 塊中的正則 uri 和請求字符串做匹配。 注意:如果 uri 包含正則表達式,則必須要有 ~ 或者 ~* 標識。

反向代理介紹

反向代理就是:暴露的是代理服務器地址,隱藏了真實服務器 IP 地址。然後反向代理到指定的服務器。

在這裏插入圖片描述

負載均衡介紹

增加服務器的數量,然後將請求分發到各個服務器上,將原先請求集中到單個服務器上的情況改爲將請求分發到多個服務器上,將負載分發到不同的服務器,也就是我們所說的負載均衡

在這裏插入圖片描述

動靜分離介紹

動靜分離就是通過nginx設置,將靜態資源和動態資源分開存放,若客戶端請求的是靜態資源,nginx自動轉發到靜態資源的目錄,而當客戶端請求的是動態資源,那麼nginx將會請求轉發到動態資源目錄,獲取動態資源。

動態資源有: jsp,servlet等等

靜態資源有: html,css,img等等

在這裏插入圖片描述

Nginx使用:

首先配置多個Tomcat

tomcat/conf/server.xml 是tomcat服務配置文件,下面把該配置文件中各端口的含義說明下.

<Server port=“8005” shutdown=“SHUTDOWN”>接受服務器關閉指令的端口號,我們叫關閉指令端口.

<Connector port=“8080” protocol="HTTP/1.1 connectionTimeout=“20000”

redirectPort=“8443” />`

http請求處理端口,我們在網頁上輸入的普通url地址包含的端口就是他 .這個端口叫http端口.

<Connector port=“8080” protocol="HTTP/1.1"connectionTimeout="20000"redirectPort=“8443” />

https請求的處理端口.這個端口叫https端口.

<Connector port=“8009” protocol=“AJP/1.3” redirectPort=“8443” />接收AJP協議的處理端口.這個端口叫ajp端口.

<Connector port=“8009” protocol=“AJP/1.3” redirectPort=“8443” />

https請求的處理端口,實際上就4個端口 。

下面我以一個系統裏啓動3個tomcat爲例,說明下操作步驟

分配端口

Tomcat8080端口分配表(tomcat1全部採用默認配置)

端口 端口號
關閉指令端口 8005
http端口 8080
https端口 8443
Ajp端口 8009

Tomcat8081端口分配表

端口 端口號
關閉指令端口 8006
http端口 8081
https端口 8444
Ajp端口 8010

Tomcat8082端口分配表

端口 端口號
關閉指令端口 8007
http端口 8082
https端口 8445
Ajp端口 8011

然後啓動這三個tomcat即可

配置4個tomcat

分別解壓到這4個文件夾

tomcat8080建test8080  

tomcat8081建test8081

tomcat8082建test8082

tomcat8083建test8083

修改端口

進入tomcat的conf中,修改 vim server.xml(以上方式)

Nginx 反向代理一:

配置Nginx

實現效果: 通過輸入ip地址,訪問的是tomcat的8080端口頁面

在這裏插入圖片描述

效果圖:

在這裏插入圖片描述

Nginx反向代理二:

第一步,準備兩個 tomcat ,一個 8001 端口,一個 8002 端口,並準備好測試的頁面
第二步,修改 nginx 的配置文件
在http 塊中添加 server{}

實現效果:

使用 nginx 反向代理, 根據訪問的路徑跳轉到不同端口的服務中nginx 監聽端口爲 80
訪問 http://ip地址/test8080/ 直接跳轉到 ip地址:8080
訪問 http://ip地址/test8081/ 直接跳轉到 ip地址:8081

配置Nginx

在這裏插入圖片描述

在這裏插入圖片描述

測試:

訪問test8080在這裏插入圖片描述

訪問test8081
在這裏插入圖片描述

Nginx 動靜分離

通過 location 指定不同的後綴名實現不同的請求轉發。通過 expires 參數設置,可以使瀏覽器緩存過期時間,減少與服務器之前的請求和流量。具體 Expires 定義:是給一個資源設定一個過期時間,也就是說無需去 服務端驗證,直接通過瀏覽器自身確認是否過期即可,所以不會產生額外的流量。此種方法非常適合不經常變動的資源。(如果經常更新的文件,不建議使用 Expires 來緩存),我這裏設置 3d ,表示在這 3 天之內訪問這個 URL ,發送一個請求,比對服務器該文件最後更新時間沒有變化,則不會從服務器抓取,返回狀態碼 304如果有修改,則直接從服務器重新下載,返回狀態碼 200 。

動態請求: 通俗的講:需要查詢數據,則要經過tomcat

靜態請求: 通俗的講,需要查詢靜態的圖片,nginx轉發到靜態資源服務器

前提: 在根目錄下創建/data,放靜態資源
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

配置Nginx

在這裏插入圖片描述
測試效果:

靜態網頁:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-LcSLsrPE-1588480838012)()]

靜態圖片:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-AW12AVph-1588480838012)()]

Nginx 負載均衡

nginx 分配服務器策略
第一種 輪詢(默認)
每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器 down 掉,能自動剔除。
第二種 weight
weigh t 代表權重默認爲 1, 權重越高被分配的客戶端越多
第三種 ip_hash
每個請求按訪問 ip 的 hash 結果分配,這樣每個訪客固定訪問一個後端服務器
第四種 fair (第三方
按後端服務器的響應時間來分配請求,響應時間短的優先分配。

在每個tomcat中加入一個文件avgtest分別放入a.html:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YItVgDlD-1588480838013)()]

配置Nginx:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-U0hDo6Dn-1588480838013)()]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nnbQkONi-1588480838014)()]

測試:

第一次刷新

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nBeAKjWV-1588480838015)()]

第二次刷新:
在這裏插入圖片描述

3個分配服務器策略配置:

權重:在這裏插入圖片描述
ip_hash:
在這裏插入圖片描述
fair分配:
在這裏插入圖片描述

最後:

以上就是Nginx的簡單介紹與使用,如果對你有幫助可以點贊支持^ _ ^
公衆號:小白編碼

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