HAProxy - chuyển tiếp đến một máy chủ web khác dựa trên URI


14

Tôi có một trang trại HTTP với cấu hình sau:

listen webfarm 10.254.23.225:80
       mode http
       balance roundrobin
       cookie SERVERID insert
       option httpclose
       option forwardfor
       option httpchk HEAD /check.txt HTTP/1.0
       server webA 10.254.23.4:80 cookie A check
       server webB 10.248.23.128:80 cookie B check

Tôi muốn thêm một số tùy chọn sẽ chuyển tiếp tất cả các yêu cầu cho một URI cụ thể (tức là / đặc biệt) đến máy chủ web thứ 3. Tôi nên làm thế nào?

Câu trả lời:


23

Đây là một bài đăng blog tôi đã viết về cân bằng tải dựa trên các tiêu đề máy chủ:

http://www.mattbeckman.com/2009/09/18/USE-the-acl-in-haproxy-for-load-balANCE-named-virtual-hosts/

Nếu bạn muốn khớp với URI hoặc thư mục, tôi sẽ đề xuất sử dụng path_beg thay vì hdr_end được sử dụng trong ví dụ được cung cấp trên trang đó. Dưới đây là một ví dụ về cách bạn có thể làm điều này với cấu hình của bạn:

frontend http-in
    bind 10.254.23.225:80
    acl has_special_uri path_beg /special
    use_backend special_server if has_special_uri
    default_backend webfarm

backend webfarm
    balance roundrobin
    cookie SERVERID insert
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
    option forwardfor
    server webA 10.254.23.4:80 cookie webA check
    server webB 10.248.23.128:80 cookie webB check

backend special_server
    balance roundrobin
    cookie SERVERID insert
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
    option forwardfor
    server webC 10.0.0.1:80 cookie webC check

Mong rằng sẽ giúp!


Này, chỉ thấy câu trả lời của bạn thôi. Tôi thực sự đã giải quyết nó bằng cách sử dụng giải pháp tương tự. Cảm ơn câu trả lời của bạn!
Saggi Malachi

Liên kết này không còn tồn tại. Tuy nhiên, nó vẫn có thể xem ở đây: web.archive.org/web/20160404161136/http://www.techrawr.com/2009/...
jaggedsoft

1
@NextLocal Cảm ơn - Tôi đã cập nhật liên kết. Tôi để tên miền trước hết hạn, nhưng đó là bí danh của liên kết được cập nhật ở trên.
Matt Beckman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.