Nginx

基於正則表達式匹配的 NGiNX 自定義記憶體參數

  • November 26, 2014

我的問題如下:

  • 如何基於正則表達式針對使用者代理設置自定義變數?
  • 如何為反向代理請求設置自定義標頭?
  • 如何使用這些值作為記憶體參數?

細節:

我正在基於使用者代理解析在我的應用程序中進行初始輸出…這基本上分解了請求渲染,因此初始渲染將匹配“xs”、“sm”、“md”、“lg”的引導大小…

我已經制定了我的正則表達式,以便移動設備將獲得為“xs”呈現的輸出,而普通平板電腦將預設獲得“sm”,其他任何人都會獲得“md”……在客戶端綁定後,它將調整為實際設備顯示,這主要是為了讓瀏覽器獲得他們需要的大小。

我想要做的是:

  • 基於與使用者代理的模式匹配設置一些參數,這些參數將通過(反向代理)傳遞給我的應用程序

    • X-Initial-Size- “xs”、“sm”、“md”、“lg”(實際上沒有什麼可以解析為“lg”
    • X-Is-Human- 與已知機器人匹配以進行檢測
    • X-Browser-Class- “古代”、“現代”、“ie#”(僅限 IE <= 9)
  • 使用X-Initial-SizeandX-Browser-Class作為vary-by參數來實現更長的伺服器端輸出記憶體。

- 如何根據使用者代理的正則表達式設置自定義變數?

使用地圖。例如 :

map $http_user_agent $my_var {
   default     "default_value";
   "~^foo$"    "value_1";
   "~^bar$"    "value_2";
}

- 如何為反向代理請求設置自定義標頭?

使用proxy_set_header。例如 :

proxy_set_header My-Header $my_var;

- 如何使用這些值作為記憶體參數?

將這些附加標頭定義為代理記憶體鍵的一部分:

proxy_cache_key $scheme$request_uri-$http_my_header-$http_my_other_header

引用自:https://serverfault.com/questions/647406