मेरे पास निम्न सेटअप है:
|-------|--- backend1:8080
example.com:80---|HAProxy|--- backend2:8080
|-------|--- backend3:8080
मैं मूल यूआरएल वाले कस्टम हेडर को जोड़ने के लिए HAProxy को कॉन्फ़िगर करना चाहूंगा। उदाहरण के लिए यदि उपयोगकर्ता अनुरोध करता है http://example.com/foo?bar=baz
, अर्थात:
GET /foo?bar=baz HTTP/1.1
Host: example.com:80
मैं HAProxy को बैकेंड के लिए इस अनुरोध का अनुवाद करना चाहूंगा:
GET /foo?bar=baz HTTP/1.1
Host: backend1:8080
x-custom-header: http://example.com/foo?bar=baz
reqadd
विकल्प केवल मुझे एक स्थिर मूल्य के साथ एक शीर्ष लेख जोड़ने के लिए अनुमति देता है। मैं का उपयोग कर अनुरोध से पथ भाग प्राप्त करने में सक्षम था reqrep
:
reqrep ^([^\ ]*)\ ([^\ ]*)\ (HTTP\/1\.[10]) \0\r\nx-custom-header:\ \2
लेकिन दुर्भाग्य से यह मूल यूआरएल के केवल मुख्य भाग को कैप्चर करता है जिसके परिणामस्वरूप निम्नलिखित हेडर हैं:
x-custom-header: /foo?bar=baz
तो मेरा सवाल यह है कि क्या हैडरॉक्सी 1.4 में Host
हेडर और HTTP अनुरोध की पहली पंक्ति को कस्टम हेडर में संयोजित करना संभव है
reqadd
एक एसीएल के साथ संयोजन करने की कोशिश की है जो संदर्भbe_id
(बैकएंड-आईडी) है? यह ठीक गतिशील नहीं है, लेकिन यह आपको करीब ला सकता है यदि बैकएंड की संख्या छोटी है ...reqirep
एक वैकल्पिक एसएल का भी समर्थन करता है, तो आप संभवतः प्रत्येक बैक-एंड के लिए अलग-अलग रीजैक्स लिख सकते हैं, प्रत्येक सक्रिय तभी होगा जब एक एसएल चयनित बैकेंड से मेल खाता हो- आईडी।