টমক্যাট সার্ভারের সামনে লোড ব্যালেন্সার হিসাবে আমি HAproxy 1.6 ব্যবহার করি।
ইউআরআই অনুরোধের ভিত্তিতে আমাকে প্রতিক্রিয়া শিরোনাম যুক্ত করতে হবে।
উদাহরণস্বরূপ, আমি Cache-Control public,max-age="600"
যখন অনুরোধ ইউরি হ'ল /api
তবে যখন অনুরোধ ইউরি অন্য কোনও কিছু হয় তখন আমি প্রতিক্রিয়া শিরোনামটি যুক্ত করতে চাই ।
আমার প্রথম চেষ্টাটি শিরোনামগুলি HTTP- প্রতিক্রিয়াতে যুক্ত করতে পাথের উপর ভিত্তি করে acl ব্যবহার করছিল:
acl api path_reg ^/api/(.*)$ http-response add-header Cache-Control public,max-age="600" if api
আমি যখন হ্যাপ্রোক্সিটি শুরু করি তখন আমার
-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
এটি কাজ করেছে তবে প্রতিক্রিয়াতে আমার এটি দরকার
আমি হ্যাপ্রোক্সি ভেরিয়েবলগুলি ব্যবহার করার চেষ্টাও করেছি:
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
কিন্তু যখন আমি চেষ্টা করি এইচএপ্রক্সিটি ইভেন্ট শুরু হয় না এবং আমার নিম্নলিখিত ত্রুটি থাকে:
[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)]'.
আমি প্রতিক্রিয়ার শিরোনাম সেট করতে কীভাবে একটি এসিএলে অনুরোধের পাথটি ব্যবহার করতে পারি?
capture.req.uri
এবং ভেরিয়েবল যখন সরানোর%[ ]
মধ্যেacl̀
কাজ করছে। আপনি প্রায়max-age
মান এবং এরset-header
পরিবর্তে উদ্ধৃতি সম্পর্কে ঠিকadd-header
।