CDN 使用百度雲,Nginx 負載后端源 ,抓取用戶真實IP


描述:因業務原因使用百度CDN ,出現后端源無法抓取用戶真實IP,過濾Postman 偽造虛擬IP,默認情況下無法過濾;

用戶訪問流程:Client---->百度CDN---->Nginx(Tengine)---->.net core (源)

需求:用戶直接訪問Nginx ,與用戶過百度CDN,都要抓取到用戶真實IP;

具體配置如下:

1. 百度雲CDN配置抓取用戶IP ,選擇類型使用:Real IP

 

 

2.安裝Nginx(Tengine),這里使用是Tengine2.3.2 版本,支持http_realip_module 模塊

 

3. 配置Nginx 日志格式;

 

 

log_format main  '$http_x_forwarded_for|$http_x_real_ip|$remote_addr - $remote_user [$time_local] "$request"
                                        $status $body_bytes_sent "$http_referer"
                                        "$http_user_agent" "$http_x_forwarded_for" "$http_x_real_ip"';

 

 

 

4. 配置Server 訪問日志,與real_ip ;

server {
         server_name localhost;
                listen 443;
                access_log  /home/logs/nginx/www_logs/web_access.log main;
                error_log  /home/logs/nginx/error.log;
 set_real_ip_from 0.0.0.0/0;
                real_ip_header   X-Real-IP;
                real_ip_recursive on;

 

 

 

5. 配置 proxy_set_header 轉發至后端,此處測試使用 proxy_set_header X-Real-IP $http_x_real_ip,proxy_set_header X-Real-IP $remote_addr ;都有測試,單獨或者組合並不能過濾postman 假請求ip ,還會攜帶CDN 節點ip ;

proxy_http_version 1.1;
proxy_set_header   Upgrade $http_upgrade;
proxy_set_header   Connection keep-alive;
proxy_set_header   Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $http_add_x_forwarded_for;

 

 6.由於我們在程序上面做一個單獨的測試接口,我們可以抓取用戶訪問真實IP;

 

 

 

 

 

 

以上使用百度雲 經過多層跳轉之后,抓取到的用戶真實IP;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM