HTTP/HTTPS請求獲取客戶端真實源IP地址
 
                  更新時間 2023-07-07 18:12:50
                    
 
                    最近更新時間: 2023-07-07 18:12:50
                  
   分享文章 
本文將幫助您了解HTTP/HTTPS請求獲取客戶端真實源IP地址的工作原理及操作步驟。
 應用場景
客戶端真實源IP地址可以用于分析網站流量和用戶行為。通過分析來源IP地址,可以了解用戶的地理位置、瀏覽器偏好和其他用戶行為指標。這些數據可以用于優化網站設計、定位目標受眾和改善用戶體驗。
工作原理
負載均衡的工作原理本身會將一個會話拆分成兩段:第一段是從客戶端到ELB;第二段是從ELB到后端主機。客戶端訪問業務的源IP地址是客戶端IP地址,目的地址是ELB的服務地址,數據報文到達ELB后,ELB會將報文的源IP地址從客戶端的IP地址替換為ELB的IP。ELB再根據客戶預定義的負載算法選擇的目標主機,將報文的目的IP地址替換為后端主機地址,再將數據轉發到后端主機。所以后端主機得到的訪問請求源IP地址是ELB的地址。在實際業務中,存在一些場景,需要通過客戶的真實IP來達到統計和監控等目的。
- 天翼云集群模式資源池,HTTP/HTTPS ELB的監聽器可以開啟了X-Forwarded-For頭字段,字段的格式如下:
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …
- 當使用此方式獲取HTTP/HTTPS請求客戶端真實IP地址時,獲取到的第一個地址就是客戶端真實IP。
主備、集群模式資源池列表見產品簡介-產品類型和規格,實際情況以控制臺展現為準。
前提條件
- 您已在所在可用區創建VPC,并創建業務主機,完成服務配置。
- 您已創建負載均衡實例。
操作步驟
- ELB側開啟七層負載獲取客戶端真實源IP地址。
- 在負載均衡頁面,點擊ELB實例名稱,進入詳情頁面。
- 在監聽器頁簽,點擊“添加監聽器”按鈕,進入創建監聽器配置頁面。
- 在監聽器配置頁面,可見獲取客戶端源IP開啟選項,用戶可自主控制開啟或關閉。


- 后端云主機內通過X-Forwarded-For獲取客戶端源IP方法,以常見的Nginx為例。
- 例如在CentOS 7.5環境下,假設安裝目錄為ctelb/,執行命令配置時以實際路徑為準。
- 執行以下命令安裝http_realip_module。
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …
wget //nginx.org/download/nginx-1.0.12.tar.gz
tar zxvf nginx-1.0.12.tar.gz
cd nginx-1.0.12
./configure --user=www --group=www --prefix=/ctelb/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module
make
make install
kill -USR2 `cat /ctelb/server/nginx/logs/nginx.pid`
kill -QUIT `cat /ctelb/server/nginx/logs/ nginx.pid.oldbin`
- 執行以下命令,打開nginx.conf文件。
vi /ctelb/server/nginx/conf/nginx.conf
- 在以下配置信息后添加新的配置字段和信息。
fastcgi connect_timeout 300;
fastcgi send_timeout 300;
fastcgi read_timeout 300;
fastcgi buffer_size 64k;
fastcgi buffers 4 64k;
fastcgi busy_buffers_size 128k;
fastcgi temp_file_write_size 128k;
- 需要添加如下配置字段和信息。
set_real_ip_from IP_address;
real_ip_header X-Forwarded-For;
- 執行以下命令,重啟Nginx。
/ctelb/server/nginx/sbin/nginx -s reload
- 查看訪問日志,您可以獲取客戶端真實源的來訪者IP地址。
cat /ctelb/server/nginx/logs/access.log
