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

Mua Proxy Mỹ, Us Nuôi Tài Khoản Etsy, eBay Tìm Hiểu Về Mua Proxy Mỹ tại Onet.com.vn

Trong thời đại công nghệ phát triển như hiện nay, mua sắm trực tuyến đã trở thành một phần...
22/06/2023

Hướng dẫn tạo email ảo miễn phí

Mail ảo hay còn được biết đến dạng email 10 phút, email dùng 1 lần, email ảo, email 10p … Mail 10...
28/12/2020

Linux File System Hierarchy

The present Filesystem Hierarchy Standard (FHS) in use today is version 2.3 which was unveiled in January of 2004.  As...
28/12/2020
Bài Viết

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

Dịch Vụ Xây Dựng Hệ Thống Peering Với Internet Exchange (IXP)
04/04/2025

Dịch Vụ Triển Khai VPN Site-to-Site & Remote Access
04/04/2025

Dịch Vụ Thiết Lập Hệ Thống Tường Lửa (Firewall)
04/04/2025

Dịch Vụ Triển Khai Hệ Thống Ảo Hóa & Cloud
04/04/2025

Dịch Vụ Triển Khai Hệ Thống Ceph
04/04/2025