Phần này hướng dẫn cấu hình HAProxy thiết lập để xác thực HTTP. (Xem hướng dẫn chung về Cân bằng tải HAProxy và cấu hình HAProxy) Tìm hiểu một trường hợp cụ thể như sau:

Giả sử dùng HAProxy để nhận các yêu cầu http gửi đến cổng 9200 (cổng của Elasticsearch) với tên miền test.xuanthulab.net (Đã cấu hình DSN trỏ tới HAProxy), lúc này HAProxy sẽ chuyển hướng về địa chỉ chỉ chạy ElasticSearch là ip-or-domain-el, thì cấu hình bình thường sẽ như sau:

frontend es_9200
    bind *:9200
    acl acl1 hdr_dom(host) -i abc.xuanthulab.net
    use_backend es_9200 if acl1

backend es_9200
   balance source
   option httpclose
   option forwardfor
   server server1 ip-or-domain-el:9200 check

Lúc này các yêu cầu gửi đến abc.xuanthulab.net:9200 thì là truy cập ip-or-domain-el:9200

Giờ mong muốn, việc truy cập cần được xác thực http (cần có user/password) mới truy cập được được abc.xuanthulab.net:9200 thì phải thực hiện các bước thêm vào cấu hình như sau:

Tạo ra một khối userlist trong đó liệt kê các user và password, ví dụ tạo ra khối này đặt tên là userlist_exam, trong đó có một user là username1 và passowrd tương ứng là passworduser1

userlist userlist_exam
    user username1 insecure-password passworduser1

Sau khi có khối này, thì tại khối frontend muốn sử dụng xác thực tạo ra một ACL để kiểm tra xem có cung cấp đúng user và password theo cú pháp, ví dụ tạo ra acl đặt tên xacthuc_http:

    acl xacthuc_http http_auth(userlist_exam)

Khi có acl xacthuc_http thì cấu hình sử dụng backend tương ứng, ngoài ra để trình duyệt hỏi để người dùng nhập thông tin đăng nhập có thể thêm vào

http-request auth realm XTL if !xacthuc_http

Tổng kết lại cấu hình sẽ như sau

userlist userlist_exam
    user username1 insecure-password passworduser1

frontend es_9200
    bind *:9200
    acl acl1 hdr_dom(host) -i abc.xuanthulab.net
    acl xacthuc_http http_auth(userlist_exam)
    http-request auth realm XTL if !xacthuc_http
    use_backend es_9200 if acl1 xacthuc_http

backend es_9200
   balance source
   option httpclose
   option forwardfor
   server server1 ip-or-domain-el:9200 check

Đăng ký nhận bài viết mới