मैं tomproat सर्वर के सामने लोड बैलेंसर के रूप में HAproxy 1.6 का उपयोग करता हूं।
मुझे URI अनुरोध के आधार पर प्रतिक्रिया हेडर जोड़ना होगा।
उदाहरण के लिए, मैं प्रतिक्रिया शीर्षलेख जोड़ना चाहूंगा Cache-Control public,max-age="600"
जब अनुरोध uri है, /api
लेकिन तब नहीं जब अनुरोध uri कुछ और हो।
Http- प्रतिक्रिया में हेडर जोड़ने के लिए पथ पर आधारित 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
मूल्य के आसपास औरset-header
इसके बजाय उद्धरण के बारे में भी सही हैंadd-header
।