目錄
1.Nginx知識網結構圖
1.1反向代理
1.2負載均衡
1.3動靜分離
2. nginx如何在linux安裝
3. nginx常用指令
4.nginx的配置檔案
4.1 反向代理實戰
4.2 反向代理小結
4.3 負載均衡實戰
4.4 動靜分離實戰
5.nginx高可用
5.1安裝keepalived
6.原了解析
小結

Nginx是一個高性能的HTTP和反向代理伺服器,特點是占用記憶體少,并發能力強,事實上nginx的并發能力确實在同類型的網頁伺服器中表現較好
nginx專為性能優化而開發,性能是其最重要的要求,十分注重效率,有報告nginx能支援高達50000個并發連接配接數
正向代理
正向代理:區域網路中的電腦使用者想要直接通路網絡是不可行的,隻能通過代理伺服器來通路,這種代理服務就被稱為正向代理。
反向代理
反向代理:用戶端無法感覺代理,因為用戶端通路網絡不需要配置,隻要把請求發送到反向代理伺服器,由反向代理伺服器去選擇目标伺服器擷取資料,然後再傳回到用戶端,此時反向代理伺服器和目标伺服器對外就是一個伺服器,暴露的是代理伺服器位址,隐藏了真實伺服器IP位址
用戶端發送多個請求到伺服器,伺服器處理請求,有一些可能要與資料庫進行狡猾,伺服器處理完畢之後,再将結果傳回給用戶端
普通請求和響應過程
但是随着資訊數量增長,通路量和資料量飛速增長,普通架構無法滿足現在的需求
我們首先想到的是更新伺服器配置,可以由于摩爾定律的日益失效,單純從硬體提升性能已經逐漸不可取了,怎麼解決這種需求呢?
我們可以增加伺服器的數量,建構叢集,将請求分發到各個伺服器上,将原來請求集中到單個伺服器的情況改為請求分發到多個伺服器,也就是我們說的負載均衡
圖解負載均衡
假設有15個請求發送到代理伺服器,那麼由代理伺服器根據伺服器數量,平均配置設定,每個伺服器處理5個請求,這個過程就叫做負載均衡
為了加快網站的解析速度,可以把動态頁面和靜态頁面交給不同的伺服器來解析,加快解析的速度,降低由單個伺服器的壓力
動靜分離之前的狀态
動靜分離之後
檢視版本
./nginx -v
1
啟動
./nginx
關閉(有兩種方式,推薦使用 ./nginx -s quit)
./nginx -s stop
./nginx -s quit
2
重新加載nginx配置
./nginx -s reload
配置檔案分三部分組成
全局塊
從配置檔案開始到events塊之間,主要是設定一些影響nginx伺服器整體運作的配置指令
并發處理服務的配置,值越大,可以支援的并發處理量越多,但是會受到硬體、軟體等裝置的制約
events塊
影響nginx伺服器與使用者的網絡連接配接,常用的設定包括是否開啟對多workprocess下的網絡連接配接進行序列化,是否允許同時接收多個網絡連接配接等等
支援的最大連接配接數
http塊
諸如反向代理和負載均衡都在此配置
location指令說明
該文法用來比對url,文法如下
location[ = | ~ | ~* | ^~] url{
}
3
=:用于不含正規表達式的url前,要求字元串與url嚴格比對,比對成功就停止向下搜尋并處理請求
~:用于表示url包含正規表達式,并且區分大小寫。
~*:用于表示url包含正規表達式,并且不區分大瞎寫
^~:用于不含正規表達式的url前,要求ngin伺服器找到表示url和字元串比對度最高的location後,立即使用此location處理請求,而不再比對
如果有url包含正規表達式,不需要有~開頭辨別
配置反向代理
目的:在浏覽器位址欄輸入位址www.123.com跳轉linux系統tomcat首頁面
具體實作
先配置tomcat:因為比較簡單,此處不再贅叙
并在windows通路
具體流程
修改之前
配置
再次通路
反向代理2
1.目标
通路http://192.168.25.132:9001/edu/ 直接跳轉到192.168.25.132:8080
通路http://192.168.25.132:9001/vod/ 直接跳轉到192.168.25.132:8081
2.準備
配置兩個tomcat,端口分别為8080和8081,都可以通路,端口修改配置檔案即可。
建立檔案内容分别添加8080!!!和8081!!!
響應如下
3.具體配置
重新加載nginx
通路
實作了同一個端口代理,通過edu和vod路徑的切換顯示不同的頁面
第一個例子:浏覽器通路www.123.com,由host檔案解析
出伺服器ip位址
192.168.25.132 www.123.com
然後預設通路80端口,而通過nginx監聽80端口代理到本地的8080端口上,進而實作了通路www.123.com,最終轉發到tomcat 8080上去
第二個例子:
實際上就是通過nginx監聽9001端口,然後通過正規表達式選擇轉發到8080還是8081的tomcat上去
1.修改nginx.conf
2.重新開機nginx
3.在8081的tomcat的webapps檔案夾下建立edu檔案夾和a.html檔案,填寫内容為8081!!!!
4.在位址欄回車,就會分發到不同的tomcat伺服器上
3.負載均衡方式
輪詢(預設)
weight,代表權,權越高優先級越高
fair,按後端伺服器的響應時間來配置設定請求,相應時間短的優先配置設定
ip_hash,每個請求按照通路ip的hash結果配置設定,這樣每一個訪客固定的通路一個後端伺服器,可以解決session 的問題
什麼是動靜分離
把動态請求和靜态請求分開,不是講動态頁面和靜态頁面實體分離,可以了解為nginx處理靜态頁面,tomcat處理動态頁面
動靜分離大緻分為兩種:一、純粹将靜态檔案獨立成單獨域名放在獨立的伺服器上,也是目前主流方案;二、将動态跟靜态檔案混合在一起釋出,通過nginx分開
動靜分離圖析
實戰準備
準備靜态檔案
配置nginx
如果nginx出現問題
解決辦法
前期準備
兩台nginx伺服器
安裝keepalived
虛拟ip
[root@192 usr]# yum install keepalived -y
[root@192 usr]# rpm -q -a keepalived
keepalived-1.3.5-16.el7.x86_64
修改配置檔案
[root@192 keepalived]# cd /etc/keepalived
[root@192 keepalived]# vi keepalived.conf
分别将如下配置檔案複制粘貼,覆寫掉keepalived.conf
虛拟ip為192.168.25.50
對應主機ip需要修改的是
smtp_server 192.168.25.147(主)smtp_server 192.168.25.147(備)
state MASTER(主) state BACKUP(備)
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 192.168.25.147
smtp_connect_timeout 30
router_id LVS_DEVEL # 通路的主機位址
vrrp_script chk_nginx {
script "/usr/local/src/nginx_check.sh" # 檢測檔案的位址
interval 2 # 檢測腳本執行的間隔
weight 2 # 權重
vrrp_instance VI_1 {
state BACKUP # 主機MASTER、備機BACKUP
interface ens33 # 網卡
virtual_router_id 51 # 同一組需一緻
priority 90 # 通路優先級,主機值較大,備機較小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.25.50 # 虛拟ip
[root@192 sbin]# systemctl start keepalived.service
通路虛拟ip成功
關閉主機147的nginx和keepalived,發現仍然可以通路
如下圖,就是啟動了一個master,一個worker,master是管理者,worker是具體工作的程序