Luogu_CF750E New Year and Old Subsequence
nginx介紹
Nginx (engine x) 是一個高效能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0釋出於2004年10月4日。
其將原始碼以類BSD許可證的形式釋出,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4釋出。
Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,在BSD-like 協議下發行。其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力在同類型的網頁伺服器中表現較好,中國大陸使用nginx網站使用者有:百度、京東、新浪、網易、騰訊、淘寶等。
特點: 佔有記憶體少 不超過2M ,併發能力強 3-5萬次/秒
Nginx的安裝
注意事項: Nginx安裝目錄 不要裝到C盤,並且路徑不要有中文 空格 及系統目錄.
關於nginx 程序項說明
記憶體佔用大的是主程序.
手動關閉Nginx 方式:先關閉守護程序,之後關閉主程序
關於nginx 操作命令
命令執行位置: 執行命令時需要在nginx的根目錄中執行.
啟動命令start nginx
重啟命令nginx -s reload
關閉命令nginx -s stop
關於Nginx反向代理配置
http { #http協議內,可以有多個服務 每個服務就是一個server server { # 監聽使用者訪問的埠 預設是80埠 listen80; # server_name 服務名稱 瀏覽器的訪問域名 server_name localhost; #配置反向代理的實現 / 攔截所有的使用者請求 location / { # root代表關鍵字 代表反向代理的目錄 root html; # index 代表預設的訪問頁面 index index.html index.htm; } } }
1.4 配置nginx圖片伺服器
1.4.1 反向代理說明
1.url地址: http://image.jt.com/2020/08/07/cc10f60491234317adf800aeafc6af1f.png
2.本地磁碟地址: D:\JT-SOFT\images/2020/08/07/cc10f60491234317adf800aeafc6af1f.png
目的:通過域名訪問真實的磁碟地址.
可以利用nginx的反向代理完成配置.
1.4.2 編輯Nginx配置檔案
現象: nginx -s reload指令 可以展現報錯資訊.
start nginx 無論啟動是否成功 ,都不能展現報錯.
習慣: 啟動nginx之後,最好執行重啟指令.
# 配置圖片伺服器 server { listen 80; server_name image.jt.com; ##通過網址轉向指定的目錄 注意/的寫法 location / { root D:/JT-SOFT/images; } }
1.4.3 網路資源訪問請求路徑
說明:通過hosts檔案可以配置域名與IP地址的對映.那麼在本機中可以實現反向代理,如果將來想要在公網中進行反向代理.則必須購買域名.
修改HOSTS檔案
檔案路勁
利用工具軟體管理HOSTS檔案:
京淘配置
#左側寫IP地址 右側寫域名 中間使用空格分隔 配置內容
127.0.0.1 image.jt.com
127.0.0.1 manager.jt.com
127.0.0.1 www.jt.com
127.0.0.1 sso.jt.com
如圖
然後點選右下角綠色圖示
有時會報一個錯誤
解決方案
關於Nginx圖片回顯異常說明
1檢查HOSTS檔案配置正常.
#左側寫IP地址 右側寫域名 中間使用空格分隔 127.0.0.1 image.jt.com 127.0.0.1 manager.jt.com 127.0.0.1 www.jt.com 127.0.0.1 sso.jt.com
2檢查NGINX配置檔案是否正確
# 配置圖片伺服器 server { listen 80; server_name image.jt.com; ##通過網址轉向指定的目錄 注意/的寫法 location / { #需要與配置檔案的寫的路勁一樣 root D:/JT-SOFT/images; } }
3重啟nginx
在重啟之前檢查是否有多餘的nginx服務項,如果有則關閉.
4hosts檔案是否生效
5根據請求路徑 檢查程式碼中路徑的拼接是否正常.
nginx域名代理
1.5.1業務需求
要求:使用者通過http://manager.jt.com的方式 訪問localhost:8091的伺服器.
利用反向代理的方式實現該功能.
# 商品管理伺服器 監聽的是使用者 manager.jt.com:80 對映的是url地址 server { listen 80; server_name manager.jt.com; #進行反向代理 location / { #對映的url請求網址. 關鍵屬性 proxy_pass proxy_pass http://localhost:8091; } }
Nginx屬性學習
2.1 Nginx負載均衡原理
2.2Nginx 叢集搭建
說明: 要求啟動3臺伺服器,執行jt-manager專案 埠號分別為8081/8082/8083, 通過/getPort請求,獲取當前伺服器埠號資訊並且字串返回.
2.2.1 動態獲取當前伺服器埠號
package com.jt.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class PortController { //考點:動態複製操作 @Value("${server.port}") private Integer port; @RequestMapping("/getPort") public String getPort(){ return "當前訪問的埠號:"+port; } }
2.3 輪詢策略
說明: 根據nginx的配置檔案,依次訪問伺服器.
# 商品管理伺服器 監聽的是使用者 manager.jt.com:80 對映的是url地址 server { listen 80; server_name manager.jt.com; #進行反向代理 location / { #對映的url請求網址. #proxy_pass http://localhost:8091; proxy_pass http://jtWindows; } } #配置叢集 1.預設方式 輪詢策略 upstream jtWindows { server localhost:8081; server localhost:8082; server localhost:8083; }
2.4 權重策略
說明: 效能越高的伺服器,則承擔的壓力也就越高.(關鍵屬性 height=阿拉伯數字)
#配置叢集 1.預設方式 輪詢策略 2.權重策略 upstream jtWindows { server localhost:8081 weight=6; server localhost:8082 weight=3; server localhost:8083 weight=1; }
2.5 IPHASH策略
需求: 有時在訪問時可能會固定的訪問某臺伺服器.將使用者與伺服器進行繫結.以後使用者只能訪問該伺服器.
演算法: IPHASH演算法.(N為伺服器個數)
#配置叢集 1.預設方式 輪詢策略 2.權重策略 3.IPhash策略 upstream jtWindows { ip_hash; server localhost:8081 weight=6; server localhost:8082 weight=3; server localhost:8083 weight=1; }
弊端:
1. 使用者與伺服器進行繫結,當伺服器宕機時則可能影響使用者的使用.
2. 由於訪問是通過算數計算的結果,可能導致嚴重的負載不均的現象.
2.3Nginx 高階屬性
2.3.1 down屬性
說明:nginx在不做任何的配置時,無法感知伺服器是否正常執行.所有會頻繁的訪問故障機.
解決方案: 可以利用down屬性 來標識故障機.
#配置叢集 1.預設方式 輪詢策略 2.權重策略 3.IPhash策略 upstream jtWindows { #ip_hash;
server localhost:8081 weight=6; server localhost:8081 down; server localhost:8082 ; server localhost:8083 ; }
2.3.2 備用機策略
說明:正常情況下一般伺服器部署時需要準備幾臺伺服器當做備用.正常的情況下該伺服器不參與工作.只有當主機遇忙時/或者宕機時.該伺服器才會工作.
配置方式:
#配置叢集 1.預設方式 輪詢策略 2.權重策略 3.IPhash策略 upstream jtWindows { #ip_hash; server localhost:8081 weight=6; server localhost:8081 down; server localhost:8082 down; server localhost:8083 backup; }
2.3.3 nginx高可用配置
說明:當tomcat伺服器宕機時,可以通過如下的配置,實現伺服器的自動的切換.無需人為的干預.
配置資訊:
fail_timeout=60s; 設定超時時間(定義一個週期)
max_fails=1 設定最大的訪問失敗次數.
#配置叢集 1.預設方式 輪詢策略 2.權重策略 3.IPhash策略 upstream jtWindows { #ip_hash;
server localhost:8081 weight=6; server localhost:8081 max_fails=1 fail_timeout=60s; server localhost:8082 max_fails=1 fail_timeout=60s; server localhost:8083 max_fails=1 fail_timeout=60s; }
配置說明:
如果nginx訪問某臺伺服器時,如果該伺服器訪問失敗,失敗的次數達到最大失敗次數時.在60秒之內,nginx不會再次訪問故障機.直到下一個週期.