nginx的正向代理和反向代理:
正向代理以及緩存配置:
代理:客戶端不再是直接訪問服務端,通過代理服務器訪問服務端。
正向代理:面向客戶端,通過代理服務器的ip地址訪問目標服務端
服務端只知道代理服務器的地址,真正的客戶端ip可以隱藏。
反向代理:又叫負載均衡
正向代理我們是知道代理服務器的地址,也知道訪問的web服務器
反向代理 客戶端還是訪問代理地址 但具體的訪問web服務器是哪一臺不知道
作用:請求分配到多個后臺服務器上,分擔服務器的負載,提供系統的可用性和穩定性
緩存加速
安全保護
四層代理和七層代理的區別
正向代理,在http模塊的server和location中
http模塊配置都是七層代理
七層就是應用層 使用的是http協議,可以對請求進行解析處理,7層代理走的是用戶態,應用協議和程序功能
7層的處理速度相對比較慢,但是可以提供更高級的功能和更好的用戶體驗
四層是傳輸層,ip+端口 請求轉發到后端,無法對請求進行深入的解析和處理,只是對請求流量的轉發
四層轉發是內核態,內核處理、內核轉發,速度較快
應用場景:7層代理 一般是對外提供訪問,需要對請求進行處理。包括安全,過濾,流量控制
4層代理 一般都是內部使用,不需要對流量、請求做特殊處理
配置方法以及負載均衡算法
反向代理=負載均衡
配置方法:
七層只能寫在http模塊當中,命令 upstream
四層只能寫在全局配置中,不能寫在http模塊中,stream
負載均衡算法:
七層
1.輪詢 round robin rr:輪詢算法是最簡單,最基礎的算法 ,也是默認算法 請求輪流分配到后端服務器
輪詢算法適用于后端服務器處理能力相同,訪問量不大的情況。
2.加權輪詢:在輪詢的基礎上,給每個后臺服務器設置不同權重。流量的分配不一定按照權重比來
權重高度被轉發的概率大,權重低的相對概率小
后端服務器的性能有差異,性能高,權重相對更高,性能低,權重相對小
weight=數字
3.最小連接數算法,least_conn 會把請求發送到當前連接數較少的后端服務器上
后端服務器處理任務 耗時不同 的情況 可以避免請求集中在處理能力更強的服務器上
4.ip_hash
iphash根據算法,計算客戶端ip地址的hash值,然后將請求轉發到相應的服務器
第一次訪問網址時,就會計算出hash值,會把請求分配到一個服務器,但是下一次客戶端如果使用相同的ip地址再次訪問,就不會再分配到其他的服務器。除非后臺服務器的算法變更,或后臺服務器數量變化,這時才會更改訪問的服務器
適用場景:高并發。如果客戶端進來之后,不停的輪換服務器,會加重服務器的負擔,固定在一臺服務器上,降低了代理服務器的壓力,也節約了資源
5.RUL_hash
根據請求的rul地址計算hash值,再轉發,每次請求的url都一樣,就會被分配到同一個服務器
轉發的地址發生變化,后臺服務器清理緩存或服務器數量發生變化 才會變化
四層代理:
配置方式只能在全局模塊,算法也比較少,只能是ip+端口,沒有ip_hash 和rul_hash算法