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

Enlightenment DR 0.21.5 Released with bugfix and stability

Enlightenment DR 0.21.5 recently released, is another bugfix and stability release for the Enlightenment 21 Release series....
28/12/2020

GPU Programming with C++

Overview In this guide, we’ll explore the power of GPU programming with C++. Developers can expect incredible performance...
28/12/2020

Refind Boot Manager

Most Linux systems boot using GRUB, however alternatives are always worth exploring. When the BURG project was started,...
29/12/2020
Bài Viết

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

Huớng dẫn dùng proxy cho ios, iphone 2023
23/09/2023

Cách gắn set proxy cho điện thoại android, oppo, giả lập android, Ldplayer Bằng Proxydroid
20/09/2023

Mua Proxy Socks5 VN Chơi Game Gia Lập Tăng Cường Trải Nghiệm Chơi Game
22/06/2023

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
22/06/2023

Mua Proxy Game – Giải pháp tuyệt vời cho việc chơi game trên mạng mà không bị giới hạn về vị trí địa lý
03/06/2023