Nginx的反向代理
阿新 • • 發佈:2020-07-30
Nginx的反向代理
正向代理
- 正向代理伺服器時由客戶端設立的
- 客戶端了解代理伺服器和目標伺服器是誰
- 幫助咱們實現突破訪問許可權,提高訪問速度,對目標伺服器隱藏客戶端的ip地址
反向代理
- 反向代理伺服器是配置在伺服器端的
- 客戶端是不知道訪問的是到底是哪一臺伺服器
- 達到負載均衡,並且可以隱藏伺服器真正的ip地址
基於Nginx實現反向代理
準備一個目標伺服器
在docker中啟動一個tomcat容器
編寫nginx配置檔案,通過Nginx訪問到tomcat伺服器
server{ listen 80; server_name localhost; #基於反向代理訪問到Tomcat伺服器 locaton / { proxy_pass http://192.168.234.100:8088/; } }
關於Nginx的location路徑對映
優先順序關係
(location=) > (location/xxx/yyy/zzz) > (location ^~) > (location ,*) > (loacation /起始路徑) > (location /)
# = 匹配
location = / {
#精準匹配,主機名ip後面不能帶任何字串
}
# 通用匹配
location /xxx {
#匹配所有以xxx開頭的路徑
}
# 正則匹配
location ~ /xxx{
#匹配所有以xxx開頭的濾鏡
}
#匹配開頭路徑 location ^~ /images/{ #匹配所有以/images開頭的路徑 }
#~* \. (gif|jpg|png)${
#匹配以gif或者jpg或者png結尾的路徑
}
負載均衡
Nginx為我們提供了三種負載均衡的策略
- 輪詢:
將客戶端發起的請求,平均分配給每一臺伺服器 - 權重:
會將客戶端的請求,根據伺服器的權重值不同,分配給不同的數量 - ip hash:
基於發起請求的客戶端ip地址不同,他始終會將請求傳送到指定的服務區上
Nginx叢集
引言
單點故障,避免nginx宕機,導致整個程式崩潰
準備keepalived,監聽nginx的健康情況
準備haproxy,提供一個虛擬的路徑,統一的去接收使用者請求