Tomcat sunucularının önünde yük dengeleyici olarak HAproxy 1.6 kullanıyorum.
İstek URI'sına dayalı yanıt üstbilgileri eklemem gerekiyor.
Örneğin Cache-Control public,max-age="600"
, istek uri olduğunda /api
ancak istek uri başka bir şey olduğunda yanıt başlığını eklemek istiyorum .
İlk denemem, http-response başlıklarını eklemek için yola dayalı acl kullanarak oldu:
acl api path_reg ^/api/(.*)$ http-response add-header Cache-Control public,max-age="600" if api
Ben haproxy ile başladığımda
-d
,path_reg
(veyapath
) ile uyumsuz olduğunu söyleyerek uyarı varhttp-response
:Dec 6 15:22:29 ip-10-30-0-196 haproxy-systemd-wrapper[315]: [WARNING] 340/152229 (2035) : parsing [/etc/haproxy/haproxy.cfg:78] : acl 'api' will never match because it only involves keywords that are incompatible with 'backend http-response header rule'
Bunun
http-request
yerine başlığı eklemeye çalıştımhttp-response
:acl api path_reg ^/api/(.*)$ http-request add-header Cache-Control public,max-age="600" if api
Bu işe yaradı ama cevapta ihtiyacım var
Ayrıca haproxy değişkenleri kullanmaya çalıştım:
http-request set-var(txn.path) path acl path_acl %[var(txn.path)] -m ^/api/(.*)$ http-response add-header Cache-Control public,max-age="600" if path_acl
Ama HAproxy denediğimde olay başlamıyor ve aşağıdaki hata var:
[ALERT] 340/162647 (2241) : parsing [/etc/haproxy/haproxy.cfg:48] : error detected while parsing ACL 'path_acl' : unknown fetch method '%[var' in ACL expression '%[var(txn.path)]'.
Yanıt başlığını ayarlamak için istek yolunu bir acl'ye nasıl kullanabilirim?
capture.req.uri
kaldırılırken ve değişkenler%[ ]
olarakacl̀
çalışmaktadır. Ayrıca etrafında tırnak konusunda haklisinmax-age
değeri veset-header
yerineadd-header
.