2009-08-31 28 views
5

Ok, tôi đang sử dụng bút để cân bằng tải. Máy chủ apache của tôi xem IP từ xa làm IP của bộ cân bằng tải. Tôi cần máy chủ apache để có thể xem địa chỉ IP của máy khách vì nhiều lý do khác nhau. Tôi có thể sử dụng X-Forwarded-For để thoát khỏi trang không được mã hóa nhưng không phải là một phần của trang SSL ...ajax/ssl/X-Forwarded-Đối với

Vì vậy, không biết Ajax, tôi tự hỏi. Tôi có thể sử dụng ajax để kéo X-Forwarded-For ra khỏi một trang không được mã hóa, và thiết lập nó như là một biến ở phía khách hàng? Tôi biết nó có thể, tôi chỉ tự hỏi nếu có ai đã làm điều này, và điều này gây ra một lỗi bảo mật trong trình duyệt.

Tôi nghĩ rằng tôi có thể chuyển hướng chúng đến một trang không ssl, sau đó đặt IP trong một cookie, sau đó quay lại trang SSL, nhưng tôi nghĩ đó là hokey quá.

Dù sao, cách khác để lấy ip cho tập lệnh cũng sẽ hoạt động. Tôi đã thử http://stderr.net/apache/rpaf/, nhưng cũng không biết IP.

Trả lời

0

AJAX bị giới hạn bởi chính sách cùng nguồn gốc và các giao thức khác nhau được coi là nguồn gốc khác nhau, vì vậy bạn sẽ không thể thực hiện yêu cầu HTTP AJAX từ trang HTTPS.

Cố gắng thực hiện điều đó thông qua các phương tiện khác có thể khiến trình duyệt cảnh báo về nội dung hỗn hợp và không an toàn.

Đặt IP vào cookie trên trang HTTP (được ký kết hoặc lưu trữ trong phiên phía máy chủ được tham chiếu bởi cookie) sẽ hoạt động nhưng sẽ không an toàn khi đọc IP thực của phiên SSL (vì kẻ tấn công có thể thao túng HTTP và bạn không thể đặt cookie chỉ có HTTPS).

Một giải pháp khác là kết thúc SSL ở trình cân bằng tải và chuyển tiếp nó dưới dạng lưu lượng HTTP đến Apache.

Tuy nhiên, một cách tiếp cận khác là sử dụng cân bằng tải ở mức độ thấp hơn - NAT - giữ nguyên địa chỉ nguồn.

Các vấn đề liên quan