Haproxy
使用 HAProxy 修改特定 URL 的 http 標頭
對於特定的 URL,我想為靜態資產設置記憶體控制標頭,例如
/images/*
,/js/*
等,告訴瀏覽器使用本地記憶體 30 天而不是獲取新版本。如何通過 haproxy 配置完成此操作?在這被誤解之前,這不是如何在 HAProxy 中記憶體內容的重複。我只希望 haproxy 將標頭附加到某些資產的請求中,告訴瀏覽器使用本地記憶體版本(如果可用),但僅限於 1 個特定域。
您可能可以在一行中完成此操作,但更清楚的是:
frontend myfrontend bind 0.0.0.0:80 default_backend default acl cache_me path_dir /js acl cache_me path_dir /images use_backend cache if cache_me backend default server server1 1.2.3.4:80 backend cache http-request set-header cache-control max-age="2592000" server server1 1.2.3.4:80
解釋:
acl
關鍵字告訴 haproxy 如果條件滿足,它應該將請求添加到特定的 acl 。
path_dir
匹配子目錄,而path
匹配整個路徑。也許path_sub
在這裡更好,它在路徑中查找子字元串。
use_backend
如果請求在 ACL 中,則將請求定向到特定後端。其他所有內容都轉到預設後端。這樣,您以後可以輕鬆地添加更多路徑,或者如果您願意,甚至可以稍後將這些請求指向不同的伺服器。
此外,還可以按域過濾:
frontend myfrontend bind 0.0.0.0:80 default_backend default acl cache_me path_dir /js acl cache_me path_dir /images acl domain1 hdr(host) -m sub example.com use_backend cache if cache_me and domain1 backend default server server1 1.2.3.4:80 backend cache http-request set-header cache-control max-age="2592000" server server1 1.2.3.4:80