Cách đăng nhập giá trị ban đầu của $ remote_addr khi sử dụng Real-IP


9

Môi trường của tôi có các yêu cầu người dùng đi qua một số hệ thống:

[Khách hàng] -> [ELB] ---> [nginx] -> [web]

(ELB = Cân bằng tải đàn hồi AWS)

Nhờ câu trả lời này , tôi đã xác định và chuyển địa chỉ IP của máy khách chính xác đến các máy chủ ngược dòng (web) với các tiêu đề X-Forwarded-ForX-Real_IP. Cấu hình nginx có liên quan:

    real_ip_header      X-Forwarded-For;
    set_real_ip_from        10.0.0.0/8;
    real_ip_recursive   on;
    proxy_set_header X-Real-IP $remote_addr;

Vấn đề của tôi là điều này, mô-đun Real IP trong nginx thay thế$remote_addr biến hiện có bằng kết quả X-Forwarded-Fortính toán của nó . Điều này mang lại cho tôi IP khách hàng ban đầu, nhưng tôi đang mất địa chỉ IP của hệ thống thực sự đã gửi yêu cầu đến proxy (tức là ELB).

Nhìn chung, việc có IP khách hàng là quan trọng hơn đối với tôi, nhưng tôi muốn có thể đăng nhập toàn bộ chuỗi yêu cầu để tôi có thể hiểu (và gỡ lỗi) lưu lượng truy cập đang chảy như thế nào. Hiện tại, tôi chỉ có thể có nginx đăng nhập IP của máy khách, IP của chính nó và IP máy chủ ngược dòng. Tôi cũng muốn có thể đăng nhập IP ELB.

Tôi thấy X-Istence đã hỏi câu hỏi tương tự vào năm 2013, với rất ít may mắn. Có bất cứ điều gì thay đổi hoặc cải thiện kể từ đó?

Câu trả lời:


8

Bạn có thể lấy địa chỉ máy khách gốc của ELB kết nối trong biến$realip_remote_addr , nhưng lưu ý rằng biến này chỉ được thêm vào nginx 1.9.7, vì vậy bạn sẽ cần chạy phiên bản nginx rất gần đây.


Cảm ơn @Michael Hampton ♦! Tôi đã trở lại để trả lời câu hỏi của riêng mình bởi vì sau khi theo đuổi một chiến lược thay thế, cuối cùng tôi cũng vấp ngã $realip_remote_addr. Nó hoạt động rất đẹp. Đã thực sự cố gắng để proxy_protatio hoạt động và xuất hiện các ghi chú vá nginx cho 1.9.7
michaelg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.