Używam HAproxy 1.6 jako modułu równoważenia obciążenia przed serwerami tomcat.
Muszę dodać nagłówki odpowiedzi na podstawie identyfikatora URI żądania.
Na przykład chciałbym dodać nagłówek odpowiedzi, Cache-Control public,max-age="600"
gdy identyfikator uri żądania jest, /api
ale nie, gdy uri żądania jest czymś innym.
Moja pierwsza próba polegała na użyciu acl na podstawie ścieżki, aby dodać nagłówki do odpowiedzi http:
acl api path_reg ^/api/(.*)$ http-response add-header Cache-Control public,max-age="600" if api
Kiedy zaczynam haproxy
-d
, ostrzegam, żepath_reg
(lubpath
) jest niezgodny zhttp-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'
Próbowałem dodać nagłówek
http-request
zamiasthttp-response
:acl api path_reg ^/api/(.*)$ http-request add-header Cache-Control public,max-age="600" if api
To działało, ale potrzebuję go w odpowiedzi
Próbowałem także użyć zmiennych haproxy:
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
Ale kiedy próbuję HAproxy nie rozpoczyna się zdarzenie i pojawia się następujący błąd:
[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)]'.
Jak mogę użyć ścieżki żądania do pliku acl, aby ustawić nagłówek odpowiedzi?
capture.req.uri
i podczas usuwania zmiennych%[ ]
wacl̀
pracy. Masz również rację co do cytatów dotyczącychmax-age
wartości iset-header
zamiastadd-header
.