Hướng dẫn cấu hình nhận Real-IP từ người dùng truy cập vào trang web thông qua Nginx

30/12/2020

Trong bài trước, mình đã hướng dẫn các bạn cách cài đặt sử dụng Nginx làm reverse proxy cho WordPress có sử dụng ssl, nếu các bạn chưa cài có thể tham khảo tại đây. Tuy nhiên sau khi cài reverse proxy, lúc ta đọc log của http tại máy chủ WordPress, ta sẽ thấy rằng IP headers của nó hiển thị là IP của Nginx. Điều đó gây khó khăn cho việc thu thập log của chúng ta.

Ở bài viết này mình sẽ hướng dẫn các bạn cách cấu hình nhận Real-IP từ người dùng truy cập vào trang web. Để có thể có đầy đủ thông tin khi ta cấu hình thu thập log và có thể phục vụ cho những việc khác ví dụ như forensic ..

1. Kiểm tra lại file cấu hình site trên Nginx

Trước tiên ta kiểm tra lại file config site đã cấu hình ở bài trước để có thể chắc chắn rằng ta đã cấu hình đúng.

cat /etc/nginx/conf.d/wordpress.hungnv99.com.conf

Dưới đây là file của mình khi đã cấu hình site và bao gồm cấu hình ssl cho site.

server {     server_name wordpress.hungnv99.com;          location / {             proxy_set_header   X-Real-IP             $remote_addr;             proxy_set_header   X-Forwarded-For       $proxy_add_x_forwarded_for;             proxy_set_header X-Forwarded-Proto https;             proxy_pass http://10.10.34.162;         }       listen 443 ssl; # managed by Certbot     ssl_certificate /etc/letsencrypt/live/wordpress.hungnv99.com/fullchain.pem; # managed by Certbot     ssl_certificate_key /etc/letsencrypt/live/wordpress.hungnv99.com/privkey.pem; # managed by Certbot     include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot     ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot  } server {     if ($host = wordpress.hungnv99.com) {         return 301 https://$host$request_uri;     } # managed by Certbot       server_name wordpress.hungnv99.com;     listen 80;     return 404; # managed by Certbot }

Tuy nhiên, chúng ta chỉ cần quan tâm đến những nội dung như sau, hoặc các bạn không cấu hình ssl có thể sử dụng nội dung như sau trong site config site.

server {     server_name wordpress.hungnv99.com;          location / {             proxy_set_header   X-Real-IP             $remote_addr;             proxy_set_header   X-Forwarded-For       $proxy_add_x_forwarded_for;             proxy_set_header X-Forwarded-Proto https;             proxy_pass http://10.10.34.162;         } }

Tại đây ta chỉ quan tâm phần location chắc chắn đã được cấu hình đúng như trên.

2. Cấu hình log_config_module tại máy chủ WordPress

Trước khi thực hiện sửa file, ta cần copy lại file để tránh trường hợp xảy ra lỗi.

cp  /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bk 

Tại máy chủ wordpress, ta tiến hành vào file /etc/httpd/conf/httpd.conf và di chuyển đến dòng chứa thẻ <IfModule log_config_module> . Tiến hành xóa thẻ và thêm lại thẻ với nội dung như sau:

<IfModule log_config_module>     LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined     LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" proxy     SetEnvIf X-Forwarded-For "^.*..*..*..*" forwarded     CustomLog "logs/access_log" combined env=!forwarded     CustomLog "logs/access_log" proxy env=forwarded      LogFormat "%h %l %u %t "%r" %>s %b" common      <IfModule logio_module>       # You need to enable mod_logio.c to use %I and %O       LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio     </IfModule> </IfModule>

Lưu lại nội dung đã thêm và khởi động lại dịch vụ http

systemctl restart httpd 

Tiếp theo, ta kiểm tra lại log trên máy chủ chạy wordpress xem đã thành công hay chưa như sau:

  • Sử dụng lệnh tailf theo dõi tệp theo thời gian thực để xem các dòng mới được ghi vào file /var/log/httpd/access_log.
  • Đứng trên 1 máy nào đó thực hiện hành động curl đến domain của trang web (máy thực hiện hành động curl của mình có IP public là 14.229.134.237).

Tại đây, sau khi bắt log tại máy chủ chạy wordpress ta thấy rằng IP header của log http đã hiển thị đúng với IP public của máy thực hiện curl đến trang web.

Như vậy mình đã hướng dẫn xong các bạn cách để nhận Real-IP từ người dùng khi truy cập web thông qua Nginx proxy. Hãy vào lại file log tại máy chủ wordpress để kiểm tra sự thay đổi nhé !

Chúc các bạn thành công !

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

How to Install and Configure OpenSUSE JeOS

OpenSUSE JeOS is an extremely slimmed-down version of normal openSUSE Tumbleweed/Leap. It’s available as images for multiple...
29/12/2020

Install and Setup Latest Openfire – Real Time Chat Server on Linux

Openfire is a free real time collaboration (RTC) server licensed under the Open Source Apache License. It uses the widely...
28/12/2020

[Ubuntu] Hướng dẫn cài đặt Ubuntu 20.04 – Server – Focal Fossa – bản develop

Ubuntu tuân theo chu kỳ phát hành phiên bản mới 2 lần một năm, với một bản phát hành vào tháng...
30/12/2020
Bài Viết

Bài Viết Mới Cập Nhật

Hướng Dẫn Chọn Dịch Vụ Thuê Địa Chỉ IPv4
10/03/2025

Reliable IPv4 and IPv6 Subnet Rental Services: The Perfect Solution for Global Businesses
23/12/2024

Tìm Hiểu Về Thuê Proxy US – Lợi Ích và Cách Sử Dụng Hiệu Quả
11/12/2024

Mua Proxy V6 Nuôi Facebook Spam Hiệu Quả Tại Onetcomvn
03/06/2024

Hướng dẫn cách sử dụng ProxyDroid để duyệt web ẩn danh
03/06/2024