1. 程式人生 > 實用技巧 >Nginx的反向代理

Nginx的反向代理

Nginx的反向代理

正向代理

  1. 正向代理伺服器時由客戶端設立的
  2. 客戶端了解代理伺服器和目標伺服器是誰
  3. 幫助咱們實現突破訪問許可權,提高訪問速度,對目標伺服器隱藏客戶端的ip地址

反向代理

  1. 反向代理伺服器是配置在伺服器端的
  2. 客戶端是不知道訪問的是到底是哪一臺伺服器
  3. 達到負載均衡,並且可以隱藏伺服器真正的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為我們提供了三種負載均衡的策略

  1. 輪詢:
    將客戶端發起的請求,平均分配給每一臺伺服器
  2. 權重:
    會將客戶端的請求,根據伺服器的權重值不同,分配給不同的數量
  3. ip hash:
    基於發起請求的客戶端ip地址不同,他始終會將請求傳送到指定的服務區上

Nginx叢集

引言

單點故障,避免nginx宕機,導致整個程式崩潰
準備keepalived,監聽nginx的健康情況
準備haproxy,提供一個虛擬的路徑,統一的去接收使用者請求