IPv6 और IPv4 के लिए समान पोर्ट पर सुनने के लिए, इसका उपयोग करें:
bind :::80 v4v6
बेशक, यह एक सहज अनुमान था जो प्रतीत होता है कि सही है ... लेकिन उत्तर के रूप में सिर्फ "भाग्यशाली" अनुमान पोस्ट करने के बजाय, भले ही यह काम करता है, ऐसा लगता है कि मुझे इसे सही ठहराना चाहिए।
v4v6 कीवर्ड haproxy को v4 सॉकेट से ही बनाता है।
मेरा पहला अंतर्ज्ञान यह था कि यह ( v4v6बल्कि :80, अधिक सटीक रूप से, बिल्कुल नहीं आईपी पते का उपयोग, केवल एक पोर्ट नंबर) का उपयोग है जो इस सॉकेट को केवल आईपीवी 4 पर सुनने का कारण बनता है।
डॉक्स में इसकी पुष्टि की जा रही है bind:
addressवैकल्पिक है और एक होस्ट नाम, एक आईपीवी 4 पता, एक आईपीवी 6 पता या हो सकता है '*'। यह उस पते को दर्शाता है जिस पर फ्रंटएंड सुनेगा। यदि कोई परेशान है, तो सिस्टम के सभी IPv4 पते सुने जाएंगे। '*'सिस्टम के विशेष पते के लिए " 0.0.0.0" ही लागू होगा । IPv6 समकक्ष '::' है।
http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#4.2-bind (जोर दिया गया)
तो निम्नलिखित तीन रूप सभी समतुल्य हैं, और सभी की व्याख्या HAProxy द्वारा IPv4 के रूप में की जाती है:
bind :80
bind *:80
bind 0.0.0.0:80
अगला, डॉक्स में एक वाक्य है जिसे v4v6आइसोलेशन में पढ़ा जा सकता है ताकि यह इंगित किया v4v6जा सके कि IPv6 पर सुनने के लिए उपरोक्त बाँध बयानों में से एक का विस्तार करने के लिए उपयोग करने योग्य हो सकता है ...
v4v6
इसका उपयोग IPv4 और IPv6 दोनों के लिए एक सॉकेट को बांधने के लिए किया जाता है जब वह डिफ़ॉल्ट पते का उपयोग करता है।
... हममम, लेकिन मुझे संदेह है कि यह वास्तव में "v6 डिफ़ॉल्ट पता" ( ::) ...
ऐसा करना कभी-कभी उन प्रणालियों पर आवश्यक होता है जो केवल डिफ़ॉल्ट रूप से IPv6 से बंधते हैं।
... और अब, मुझे इस पर और भी संदेह है ...
गैर-आईपीवी 6 सॉकेट पर इसका कोई प्रभाव नहीं है, और v6onlyविकल्प द्वारा ओवरराइड किया गया है।
http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#5.1
तो, ऐसा प्रतीत होता है कि v4v6केवल bindIPv6 डिफ़ॉल्ट श्रवण पते को निर्दिष्ट करने वाले निर्देशों को संशोधित करता है , जो ::(3 :पता और पोर्ट के बीच विभाजक है), और दूसरों के लिए अनदेखा किया जाता है।
bind :::80 v4v6?