Tomcatサーバーの前のロードバランサーとしてHAproxy 1.6を使用しています。
リクエストURIに基づいて応答ヘッダーを追加する必要があります。
たとえば、リクエストuriが他の何かであるときでCache-Control public,max-age="600"
は/api
なく、リクエストuriがあるときにレスポンスヘッダーを追加したいと思います。
私の最初の試みは、ヘッダーをhttp-responseに追加するためにパスに基づいてaclを使用することでした:
acl api path_reg ^/api/(.*)$ http-response add-header Cache-Control public,max-age="600" if api
でhaproxyを開始する
-d
と、path_reg
(またはpath
)がと互換性がないことを警告しhttp-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'
http-request
代わりにヘッダーを追加しようとしましたhttp-response
:acl api path_reg ^/api/(.*)$ http-request add-header Cache-Control public,max-age="600" if api
うまくいきましたが、応答でそれが必要です
私も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
しかし、HAproxyを開始しようとするとイベントが開始されず、次のエラーが発生します。
[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)]'.
ACLへの要求パスを使用して応答ヘッダーを設定するにはどうすればよいですか?
capture.req.uri
中のメソッドと変数の両方が機能%[ ]
しacl̀
ています。また、max-age
valueとのset-header
代わりの引用符についても正しいですadd-header
。