Tomcat 서버 앞에서 HAproxy 1.6을로드 밸런서로 사용합니다.
요청 URI를 기반으로 응답 헤더를 추가해야합니다.
예를 들어 Cache-Control public,max-age="600"
요청 URI가 /api
있지만 요청 URI가 다른 것이 아닌 경우 응답 헤더를 추가하고 싶습니다 .
첫 번째 시도는 경로를 기반으로 acl을 사용하여 헤더를 http-response에 추가하는 것입니다.
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
valueset-header
대신 따옴표 대신 따옴표에 대해 옳습니다add-header
.