作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與新應用遞送方案的介紹與推廣。

我們在前篇討論了NSX Advanced Load Balancer內的Network Security及HTTP Security兩種Policies,本篇繼續說明更常用的HTTP Request / HTTP Response這兩種可以於UI內進行Web網站進階配置的機制,並且搭配用戶實際運作的案例來進行說明。

HTTP Request Policy

HTTP Request Policy內的條件比對 (Match) 部分與HTTP Security Policy相同,可以就HTTP協議、版本、URL包含Path / Query、表頭、Cookie等等機制來進行比對。而條件符合時,可進行的動作 (Action) 包括了

  • Redirect:對用戶端回應HTTP 3XX狀態,並提供對應轉址地址
  • Modify Header:可以進行新增、刪除、或修改特定Header的值
  • Rewrite URL:修改URL內的特定字串,比如說更換path內的指定目錄地址
  • Content Switch:符合條件時,將用戶要求送到特定的Pool / Pool Group,或是由NSX ALB本身進行回應。

因為HTTP Request Policy非常常用,舉兩個例子。第一個例子是客戶的應用在擴張過程當中,逐步將不同的新服務放到不同的後端伺服器。當用戶要呼叫不同服務時,在URL的path內指名。比如說如果用戶要連往aaa服務,網址內就打www.acme.com/aaa/,而要連往bbb服務,網址就打www.acme.com/bbb/。同時,後端的網頁伺服器內不希望看到路徑部分(因為目錄結構不同),因此希望把路徑還原到根目錄(移除路徑)。

像這樣的要求,在HTTP Request Policy內用Rewrite URL及Content-Switch做非常簡單。在下面的畫面內,如果看到連往這個Virtual Service的HTTP Request內,路徑以/aaa開頭,此時

  • 以Rewrite URL將path修改為僅有”/”
  • 往後將此Request送到對應/aaa的這個Pool (Pool-Redirect-NoSSL-Apache2)

而如果路徑為/bbb開頭,也進行相同的處理。

第二個範例也是極常見的轉址。比如說隨著時間企業由於商業理由,要改動網站原本的網域名稱。但原本大量的用戶都只知道舊的網域,要怎麼讓他們連到新的網站來呢?下面的範例,如果用戶連到的是www.acme.com.tw這個網域,此時透過Redirect機制,直接要求用戶瀏覽器改連往https://www.acmebank.com/,且保留所有的path與query值。以這種方式,就能無痛地簡單達成網域轉換,也無需還要留一台Web Server專門來做轉址的工作了。

HTTP Response Policy

與HTTP Request Policy不同,Response Policy看的是HTTP回應內容。因此除了原本比對的HTTP協議、版本、URL包含Path / Query、表頭、Cookie等等外,進一步包含回應狀態值 (HTTP Status),回應內的表頭,以及Location表頭(轉址時的地址)。而符合條件時,動作包含了修改特定回應表頭,以及修改Location地址等等。

第一個實例非常直接,客戶原本的網頁伺服器內,要回應轉址時,給的Location值有些僅要求用http而非https。後續在資安團隊要求下,所有的轉址地址也必須改為採用https。在不修改原本的網頁伺服器(因為很老舊了客戶不想動)下,直接在NSX ALB可以透過HTTP Response Policy做下列手腳

  • 如果HTTP回應值為302 (轉址),且Location Header並不是以 https:// 開頭
  • 此時,改寫Location Header。Protocol採用HTTPS及443 port,但所有的Host / Path / Query採用原本網站回應的設定,不進行修改

第二個舉例也很類似,之前的網站在建立時可能有HTTPS / HTTP的鏈結混用,現在資安團隊因應新的規範,要求強制實行HTTP強制安全傳輸技術(HSTS, HTTP Strict Transport Security)。這個技術在實作上,會於HTTP Response內加入一個Strict-Transport-Security表頭,並且於對應的Value內加入強制時間(通常設定是31536000秒,就是365天),以及includeSubDomains參數(所有子網域的連接也要強制使用HTTPS)。此時,要一台台Web Server進去改很麻煩,但在NSX ALB的Response Policy內設定就相當單純:

這兩篇就UI內可以快速配置的四種Policies:Network Security / HTTP Security / HTTP Request / HTTP Response各自與大家進行討論,並舉了幾個常用的例子。看起來應該滿簡單實用?實際上大概七八成的用戶需求,用上述的Policy都能達成。但確實有些網站管理上較複雜的需求,沒辦法僅用UI介面就做到,此時更進階的方式就是採用Datascript這個工具,在下篇開始與大家進行介紹。