HƯỚNG DẪN Chuyển tiếp real IP tới các máy chủ Nginx proxy hoặc cân bằng tải

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 5/12/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    Ngày trước, tôi đã làm việc trên một giải pháp cân bằng tải sử dụng Kemp’s Load Master 2200 Load Balancer. Đằng sau phần cứng này đã có 2 máy chủ Nginx. Cấu hình cân bằng tải là Layer 7 với X-Forwarded-For. Tất cả mọi thứ lúc đầu rất tốt, tất cả các trang của tôi đã được xử lý từ cân bằng tải mà không có vấn đề, tuy nhiên có một điều đã biến mất, đó là các địa chỉ IP thực của khách truy cập.

    Vì vậy, để khắc phục nó, tất cả những gì cần làm là chuyển tiếp real IP cho các máy chủ Nginx. Làm thế nào tôi có thể làm điều đó? Rất đơn giản: sử dụng tùy chọn set_real_ip_from và real_ip_header tại nginx.conf
    Trên máy chủ Nginx của bạn, chỉnh sửa nginx.conf để phát hiện các ip/header thực sự:
    Mã:
     nano -w /etc/nginx/nginx.conf 
    Thêm dòng này vào cuối cấu hình của bạn:
    Mã:
    set_real_ip_from 127.0.0.1;
    set_real_ip_from 192.168.1.1;
    
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;
    
    Giải thích:
    127.0.0.1 và 192.168.1.1 là IP thực, nơi lưu lượng của bạn đến, 192.168.1.1 là front server/proxy IP, trong trường hợp của tôi là IP của cân bằng tải.

    real_ip_header: định nghĩa một trường request header sử dụng để gửi địa chỉ cho một sự thay thế, trong trường hợp này tôi sử dụng X-Forwarded-For.

    real_ip_recursive về: IP thực từ địa chỉ khách hàng của bạn phù hợp với một trong những địa chỉ đáng tin cậy sẽ được thay thế bằng địa chỉ cuối cùng không đáng tin cậy được gửi trong các trường request header.

    Reload lại Nginx để áp dụng thay đổi:
    Mã:
     /etc/init.d/nginx reload
    Và Nginx sẽ nhận 11.12.14.15 như IP khách truy cập của bạn.

    Kiểm tra Nginx IP address response
    Hãy tạo ra một tập tin PHP đơn giản trong thư mục root của trang web của bạn để có được địa chỉ IP của người truy cập:
    Mã:
     nano -w ip.php 
    Dán bên này:
    Mã:
     <? echo $_SERVER["REMOTE_ADDR"]; ?> 
    Lưu tập tin và load nó trong trình duyệt của bạn: http://www.yoursite.com/ip.php
    Nếu bạn nhận được địa chỉ IP công cộng của bạn, thì bạn đã thành công.
    Tìm hiểu thêm từ tài liệu chính thức: http://nginx.org/en/docs/http/ngx_http_realip_module.html
     

Chia sẻ trang này

Đang tải...