Nginx

NGINX:忽略用於 FastCGI 記憶體目的的 fbclid 參數

  • April 30, 2021

這裡有對這個問題的一些很好的回答:NGINX: Ignoring certain URL Parameters for Cache Purposes

但我似乎無法讓它發揮作用。我正在執行 wordpress 安裝,這是我的映射:

map $args $cachestep1 {
 default $args;
 ~^(fbclid=[^&]*&?)(.*)$             $2;
 ~^([^&]*)(&fbclid=[^&]*)(&?.*)$     $1$3;
}

還有我的記憶體鍵:

fastcgi_cache_key $scheme$host$request_method$uri$cachestep1;

我仍然在具有不同 fbclids 的完全相同的 url 上獲得記憶體 MISS。

看起來第三個正則表達式有點錯誤 -^([^&]*)(&fbclid=[^&]*)(&?.*)$不會匹配像a=c&c=d&fbclid=trimm&xxx=yyy.

它可以替換為^(.*)(&fbclid=[^&]*)(&?.*)$. 在regex101.com上嘗試一下。

幾個小的改進:

  • 不擷取組(?:...)
  • .*?- 不貪婪的版本.*(盡可能少的字元)
map $args $cachestep1 {
 default $args;
 ~^(?:fbclid=[^&]*&?)(.*)$             $1;
 ~^(.*?)(?:&fbclid=[^&]*)(&?.*)$     $1$2;
}

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