Tôi đang sử dụng máy chủ apache (2.4) được cấu hình là loadbalancer trước 2 máy chủ apache. Nó hoạt động tốt khi tôi sử dụng các kết nối http giữa loadbalancer và backends, tuy nhiên sử dụng https không hoạt động. Cấu hình của loadbalancer:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
<Proxy balancer://testcluster>
BalancerMember https://[Backend1]:443/test
BalancerMember https://[Backend2]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
Các phụ trợ chỉ có chứng chỉ tự ký cho đến bây giờ, đó là lý do tại sao xác minh chứng chỉ bị vô hiệu hóa.
Nhật ký lỗi trên loadbalancer chứa các mục sau:
[proxy:error] [pid 31202:tid 140325875570432] (502)Unknown error 502: [client ...] AH01084: pass request body failed to [Backend1]:443 ([Backend1])
[proxy:error] [pid 31202:tid 140325875570432] [client ...] AH00898: Error during SSL Handshake with remote server returned by /test/test.jsp
[proxy_http:error] [pid 31202:tid 140325875570432] [client ...] AH01097: pass request body failed to [Backend1]:443 ([Backend1]) from [...] ()
Trang lỗi trong trình duyệt chứa:
Proxy Error
The proxy server could not handle the request GET /test/test.jsp.
Reason: Error during SSL Handshake with remote server
Như tôi đã trình bày ở trên, việc thay đổi cấu hình thành giao thức http và cổng 80 hoạt động. Ngoài ra các kết nối https giữa máy khách và bộ cân bằng tải hoạt động, do đó mô đun ssl của bộ cân bằng tải dường như được thiết lập đúng. Kết nối trực tiếp với phụ trợ qua https cũng không mang lại bất kỳ lỗi nào.
Cảm ơn trước cho thời gian của bạn
Chỉnh sửa: Tôi đã tìm ra nó, vấn đề là tên chứng chỉ chung của tôi không khớp với tên máy chủ. Tôi nghĩ SSLProxyVerify sẽ không làm cho sự không phù hợp này bị bỏ qua, nhưng nó không. Trước khi apache 2.4.5, kiểm tra này có thể bị vô hiệu hóa bằng cách sử dụng tắt SSLProxyCheckPeerCN nhưng trên các phiên bản cao hơn (tôi đang sử dụng 2.4.7) cũng cần chỉ định tắt SSLProxyCheckPeerName .
Tài liệu Apache cho sslproxycheckpeername
Cấu hình làm việc trông như thế này:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
<Proxy balancer://testcluster>
BalancerMember https://[backend1]:443/test
BalancerMember https://[backend1]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
Thật không may, tôi không thể trả lời câu hỏi của mình vì thiếu danh tiếng nên tôi đã chỉnh sửa câu hỏi của mình, tôi hy vọng điều này sẽ giúp bất cứ ai gặp phải vấn đề tương tự