Chào các bạn, bài viết này chúng ta sẽ tìm hiểu cách config Nginx để apache có thể nhận được IP của client (trong mô hình Nginx làm proxy).

Bước 1: Kiểm tra Nginx đã có module http-realip hay chưa

Trên server proxy:

Gõ lệnh sau để show các module nginx đang hỗ trợ:

nginx -V

Kiểm tra bắt buộc phải có module http-realip như hình dưới.

Hình 1: Kiểm tra các module Nginx đang hỗ trợ

Bước 2: Thêm IP của client vào Header của Nginx

Trên server proxy:

Thêm dòng này trong file config nginx.conf, hoặc trong file include proxy.inc để tiện cho việc quản lý.

proxy_set_header X-Real-IP $remote_addr;


Tiếp theo restart nginx để update config.

service nginx restart

Bước 3: Cấu hình Nginx trên server backend

Trên server backend:

Ở bước 3 này, chúng ta sẽ vào server backend, cấu hình dịch vụ nginx chấp nhận sử dụng header mà Nginx trên proxy forward về.
Thao tác sẽ như sau:

  1. Mở file /etc/nginx/nginx.conf và thêm 2 dòng sau đây:

    real_ip_header        X-Real-IP;
    set_real_ip_from     103.200.21.xx;

    Thay 103.200.21.xx bằng IP main của proxy, hoặc cả subnet 103.200.21.0/24 của proxy nếu không xác định được chính xác.

  2. Restart nginx để update config.

    service nginx restart
  3. Kiểm tra lại access_log của backend xem đã nhận được chính xác IP client chưa.

    tailf /var/log/httpd/domains/<domain>.access_log

    Thay /var/log/httpd/domains/.access_log bằng đường dẫn tới file access_log của domain.

Leave a Reply

Your email address will not be published. Required fields are marked *