मैं 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।