Tôi có các thiết lập sau:
(internet) ---> [ pfSense Box ] /-> [ Apache / PHP server ]
[running HAproxy] --+--> [ Apache / PHP server ]
+--> [ Apache / PHP server ]
\-> [ Apache / PHP server ]
Đối với các yêu cầu HTTP, điều này hoạt động rất tốt , các yêu cầu được phân phối cho các máy chủ Apache của tôi rất tốt. Đối với các yêu cầu SSL, tôi đã có HAproxy phân phối các yêu cầu bằng cách sử dụng cân bằng tải TCP và nó đã hoạt động tuy nhiên vì HAproxy không hoạt động như một proxy, nên nó không thêm X-Forwarded-For
tiêu đề HTTP và các máy chủ Apache / PHP không biết máy khách địa chỉ IP thật.
Vì vậy, tôi đã thêm stunnel
vào trước HAproxy, đọc rằng stunnel có thể thêm X-Forwarded-For
tiêu đề HTTP. Tuy nhiên, gói mà tôi có thể cài đặt vào pfSense không thêm tiêu đề này ... ngoài ra, điều này rõ ràng sẽ giết chết khả năng sử dụng các yêu cầu KeepAlive của tôi , thứ mà tôi thực sự muốn giữ. Nhưng vấn đề lớn nhất đã giết chết ý tưởng đó là stunnel đã chuyển đổi các yêu cầu HTTPS thành các yêu cầu HTTP đơn giản, vì vậy PHP không biết rằng SSL đã được bật và cố gắng chuyển hướng đến trang SSL.
Làm cách nào tôi có thể sử dụng HAproxy để tải số dư trên một số máy chủ SSL, cho phép các máy chủ đó biết cả địa chỉ IP của khách hàng và biết rằng SSL đang được sử dụng? Và nếu có thể, làm thế nào tôi có thể làm điều đó trên máy chủ pfSense của mình?
Hay tôi nên bỏ tất cả những thứ này và chỉ sử dụng nginx?
X-Forwarded-For
, xem ở đây .