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