Nginx 筆記(三)nginx 配置實例 - 反向代理、負載均衡、動靜分離


個人博客網:https://wushaopei.github.io/    (你想要這里多有)

一、反向代理

反向代理准備工作:

(1)在 liunx 系統安裝 tomcat,使用默認端口 8080
  tomcat 安裝文件放到 liunx 系統中,解壓
  進入 tomcat 的 bin 目錄中,./startup.sh 啟動 tomcat 服務器
(2)對外開放訪問的端口
  firewall-cmd --add-port=8080/tcp --permanent
  firewall-cmd –reload
  查看已經開放的端口號
  firewall-cmd --list-all
(3)在 windows 系統中通過瀏覽器訪問 tomcat 服務

實現效果1:使用 nginx 反向代理,訪問 www.tomcatServers.com 直接跳轉到 49.234.111.11:8080(虛擬機的tomcat地址)

1、實驗代碼

1) 啟動一個 tomcat,瀏覽器地址欄輸入 127.0.0.1:8080,出現如下界面

2)訪問過程的分析
3) 通過修改本地 host 文件,將 www.tomcatServers.com 映射到 127.0.0.1

配置完成之后,我們便可以通過 www.tomcatServers.com:8080 訪問到第一步出現的 Tomcat 初始界面。那么如何只需要輸入
www.tomcatServers.com 便可以跳轉到 Tomcat 初始界面呢?便用到 nginx的反向代理。
 
添加內容在host 文件中:

 192.168.17.129       www. tomcatServers.com
 
注:前者是代理服務地址,后者是暴露在外的訪問地址
4) 在 nginx.conf 配置文件中增加如下配置

    

如上配置,我們監聽 80 端口,訪問域名為 www.tomcatServers.com,不加端口號時默認為 80 端口,故
訪問該域名時會跳轉到 127.0.0.1:8080 路徑上。在瀏覽器端輸入 www.tomcatServers.com 結果如下:
5)最終測試:

實驗效果2 :

使用 nginx 反向代理,根據訪問的路徑跳轉到不同端口的服務中
 
nginx 監聽端口為 9001,
 
  訪問 http://192.168.17.129:9001/edu/ 直接跳轉到 127.0.0.1:8080
  訪問 http:// 192.168.17.129:9001/vod/ 直接跳轉到 127.0.0.1:8081

2.1 、實驗代碼

第一步,准備兩個 tomcat,一個 8001 端口,一個 8002 端口,並准備好測試的頁面
在tomcat的webapps目錄下創建edu目錄,並創建測試頁面

第二步,具體配置
1)找到 nginx 配置文件,進行反向代理配置
在 http 塊中添加 server{}

location 指令說明

該指令用於匹配 URL。

語法如下:

   

  1. = :用於不含正則表達式的 uri 前,要求請求字符串與 uri 嚴格匹配,如果匹配成功,就停止繼續向下搜索並立即處理該請求。
  2. ~:用於表示 uri 包含正則表達式,並且區分大小寫。
  3. ~*:用於表示 uri 包含正則表達式,並且不區分大小寫。
  4. ^~:用於不含正則表達式的 uri 前,要求 Nginx 服務器找到標識 uri 和請求字 符串匹配度最高的 location 后,立即使用此 location 處理請求,而不再使用 location 塊中的正則 uri 和請求字符串做匹配。

注意:如果 uri 包含正則表達式,則必須要有 ~ 或者 ~* 標識。

 
2)開放對外訪問的端口號 9001 8080 8081
 
4、最終測試


解析:

二、nginx 配置實例-負載均衡

1、實現效果

 
1)瀏覽器地址欄輸入地址 http://192.168.17.129/edu/a.html,負載均衡效果,平均 8080和 8081 端口中
 

2、准備工作

 
1)准備兩台 tomcat 服務器,一台 8080,一台 8081
2)在兩台 tomcat 里面 webapps 目錄中,創建名稱是 edu 文件夾,在 edu 文件夾中創建頁面 a.html,用於測試

 

3、在 nginx 的配置文件中進行負載均衡的配置

 

4nginx 分配服務器策略

隨着互聯網信息的爆炸性增長,負載均衡(load balance)已經不再是一個很陌生的話題,
顧名思義,負載均衡即是將負載分攤到不同的服務單元,既保證服務的可用性,又保證響應
足夠快,給用戶很好的體驗。快速增長的訪問量和數據流量催生了各式各樣的負載均衡產品,
很多專業的負載均衡硬件提供了很好的功能,但卻價格不菲,這使得負載均衡軟件大受歡迎,
nginx 就是其中的一個,在 linux 下有 Nginx、LVS、Haproxy 等等服務可以提供負載均衡服
務,而且 Nginx 提供了幾種分配方式(策略):
 
4.1、輪詢(默認)
    每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器 down 掉,能自動剔除。
4.2weight
    weight 代表權,重默認為 1,權重越高被分配的客戶端越多
     指定輪詢幾率,weight 和訪問比率成正比,用於后端服務器性能不均的情況。 例如
 
upstream server_pool{ 
server 192.168.5.21 weight=10; 
server 192.168.5.22 weight=10; 
}
4.3ip_hash
每個請求按訪問 ip hash 結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決 session 的問題。
例如:
upstream server_pool{ 
ip_hash; 
server 192.168.5.21:80; 
server 192.168.5.22:80; 
}
4. 4fair(第三方)
按后端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream server_pool{ 
server 192.168.5.21:80; 
server 192.168.5.22:80; 
fair; 
}

三、Nginx 配置實例-動靜分離

Nginx 動靜分離簡單來說就是把動態跟靜態請求分開,不能理解成只是單純的把動態頁面和靜態頁面物理分離。嚴格意義上說應該是動態請求跟靜態請求分開,可以理解成使用 Nginx 處理靜態頁面,Tomcat 處理動態頁面。動靜分離從目前實現角度來講大致分為兩種,一種是純粹把靜態文件獨立成單獨的域名,放在獨立的服務器上,也是目前主流推崇的方案;另外一種方法就是動態跟靜態文件混合在一起發布,通過 nginx 來分開。

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

1、准備工作
liunx 系統中准備靜態資源,用於進行訪問
 

   

  • 在 image 目錄下上傳一張圖片作為靜態資源
  • 在 www 目錄下創建一個 a.html 頁面作為動態資源
2、具體配置
1)在 nginx 配置文件中進行配置

   

  1. 添加監聽端口、訪問名字
  2. 重點是添加 location,
  3. 最后檢查 Nginx 配置是否正確即可,然后測試動靜分離是否成功,之需要刪除后端 tomcat服務器上的某個靜態文件,查看是否能訪問,如果可以訪問說明靜態資源 nginx 直接返回了,不走后端 tomcat 服務器
3、最終測試
1)瀏覽器中輸入地址
  http://192.168.17.129/image/01.jpg

   

* 因為配置文件 autoindex on

2)在瀏覽器地址欄輸入地址
    http://192.168.17.129/www/a.html



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM