Nginx 配置根據請求IP末段進行分流

原文鏈接: 何曉東 博客

主要是 location 參數中的 if 判斷的配置跳轉,分流能減輕服務器的負載和壓力,這種是一種非常常見的服務器部署架構。

根據 IP 最後一段的範圍來跳轉

#域名,ip,端口等信息請自行修改

upstream huaji-01.com {
  server 192.168.1.100:8080;
}

upstream huaji-02.com {
  server 192.168.1.200:8080;
}

server {

  listen 80;
  server_name www.huaji.com;

  location /
  {
   if ( $remote_addr ~* ^(.*)\.(.*)\.(.*)\.[1,125]$) {
        proxy_pass http://huaji-01.com;
        break;
    }

    proxy_pass http://huaji-02.com;
  }

}

以上爲將 IP 末段爲 1-125 的請求來源轉發到 huaji-01.com,其他轉向huaji-02.com,同樣可以修改正則,例如

規則: $remote_addr ~* ^(.*)\.(.*)\.(.*)\.*[0268]$ 末尾爲0268這樣的偶數ip,跳轉到 huaji-01.com,其他跳轉到第二個域名;

規則:$remote_addr ~* ^(112)\.(.*)\.(.*)\.(.*)$ 開頭爲 112 的 IP 跳轉到指定的域名;

規則:$http_x_forwarded_for ~* ^(112)\.(.*)\.(.*)\.(.*)$ 根據 forward 地址段來分流,開頭爲 112 的跳轉到指定域名

if 指令條件判斷的含義:

正則表達式匹配,其中:

~ 爲區分大小寫匹配

~* 爲不區分大小寫匹配

!~ 和 !~* 分別爲區分大小寫不匹配及不區分大小寫不匹配

文件及目錄匹配,其中:

-f 和 !-f 用來判斷是否存在文件

-d 和 !-d 用來判斷是否存在目錄

-e 和 !-e 用來判斷是否存在文件或目錄

-x 和 !-x 用來判斷文件是否可執行

rewrite指令的最後一項參數爲flag標記,flag標記有:

last 相當於 apache 裏面的 [L] 標記,表示 rewrite。

break 本條規則匹配完成後,終止匹配,不再匹配後面的規則。

redirect 返回 302 臨時重定向,瀏覽器地址會顯示跳轉後的 URL 地址。

permanent 返回 301 永久重定向,瀏覽器地址會顯示跳轉後的 URL 地址。

參考鏈接:

  1. Nginx 中文文檔
  2. Nginx rewrite模塊文檔

繼續推薦幾個課程哈 -> 去看看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章