HAProxy reqrep के बारे में वास्तविक त्वरित प्रश्न। मैं उस अनुरोध को फिर से लिखने / बदलने की कोशिश कर रहा हूं जो बैकएंड को भेजा जाता है।
मेरे पास निम्न उदाहरण डोमेन और यूआरआई हैं, दोनों एक ही डोमेन नाम को साझा कर रहे हैं, लेकिन विभिन्न बैकएंड वेब सर्वर पूल हैं।
http://domain/web1
http://domain/web2
मैं चाहता हूं कि वेब 1 वेबफर्म 1 का बैकएंड पर जाए, और वेब 2 वेबफार्म 2 पर जाए। वर्तमान में ऐसा होता है। हालाँकि, जब बैकएंड को अनुरोध भेजा जाता है, तो मैं web1 या web2 URI से अलग करना चाहता हूं।
यहाँ मेरा haproxy.cfg है
frontend webVIP_80
mode http
bind :80
#acl routing to backend
acl web1_path path_beg /web1
acl web2_path path_beg /web2
#which backend
use_backend webfarm1 if web1_path
use_backend webfarm2 if web2_path
default_backend webfarm1
backend webfarm1
mode http
reqrep ^([^\ ]*)\ /web1/(.*) \1\ /\2
balance roundrobin
option httpchk HEAD /index HTTP/1.1\r\nHost:\ example.com
server webtest1 10.0.0.10:80 weight 5 check slowstart 5000ms
server webtest2 10.0.0.20:80 weight 5 check slowstart 5000ms
backend webfarm2
mode http
reqrep ^([^\ ]*)\ /web2/(.*) \1\ /\2
balance roundrobin
option httpchk HEAD /index HTTP/1.1\r\nHost:\ example.com
server webtest1-farm2 10.0.0.110:80 weight 5 check slowstart 5000ms
server webtest2-farm2 10.0.0.120:80 weight 5 check slowstart 5000ms
यदि मैं जाता हूं http://domain/web1
या http://domain/web2
मैं इसे त्रुटि लॉग में देखता हूं कि प्रत्येक बैकएंड में एक सर्वर पर अनुरोध जो क्रमशः संसाधन / web1 या / web2 के लिए है। इसलिए मेरा मानना है कि मेरी नियमित अभिव्यक्ति में कुछ गड़बड़ है, भले ही मैंने इसे डॉक्यूमेंटेशन से कॉपी और पेस्ट किया हो। http://code.google.com/p/haproxy-docs/wiki/reqrep
सारांश: मैं URI पर आधारित ट्रैफ़िक को रूट करने की कोशिश कर रहा हूँ, हालाँकि मैं चाहता हूँ कि जब यह बैकएंड पूल को रिक्वेस्ट भेजता है तो मैं URI को स्ट्रिप कर दूंगा।
धन्यवाद!
-जिम