835
敦煌網
獲取訪問者真實IP___常見接入問題_Web 應用防火牆-阿裏雲
使用“Web應用防火牆”後獲取訪問者真實IP配置指南
很多時候,網站並不是簡單的從用戶的瀏覽器直達服務器, 中間可能會加入CDN、WAF、高防。
變成如下的架構:
用戶 —–> CDN/WAF/高防 ——> 源站服務器
那麼,經過這麼多層加速,服務器如何才能得到發起請求的真實客戶端IP呢?
當一個透明代理服務器把用戶的請求轉到後麵服務器的時候,會在HTTP的頭中加入一個記錄:
X-Forwarded-For:用戶真實IP
如果中間經曆了不止一個代理服務器,那麼X-Forwarded-For可能會為以下的形式:
X-Forwarded-For:用戶IP, 代理服務器1-IP, 代理服務器2-IP, 代理服務器3-IP, ……
那麼如何獲取X-Forwarded-For的內容?
獲取來訪真實IP方法
常見應用服務器獲取來訪者真實IP的方法.
- 使用X-Forwarded-For的方式獲取訪問者真實IP
以下針對常見的應用服務器配置方案進行介紹:
IIS 6 配置方案
通過IIS 6日誌中獲取來訪者真實IP地址的解決方案,首先需要安裝插件F5XForwardedFor.dll,下載地址
- 根據自己的服務器操作係統版本將x86Release或者x64Release目錄下的F5XForwardedFor.dll拷貝到某個目錄,這裏假設為C:ISAPIFilters,同時確保對IIS進程對該目錄有讀取權限。
- 打開IIS管理器,找到當前開啟的網站,在該網站上右鍵選擇“屬性”,打開屬性頁。
- 在屬性頁切換至“ISAPI篩選器”,點擊“添加”按鈕,出現添加窗口。
- 在添加窗口:“篩選器名稱”填寫“F5XForwardedFor”,“可執行文件”填寫F5XForwardedFor.dll的完整路徑,點擊確定。
- 重啟IIS服務器,等待配置生效。
IIS 7 配置方案
通過F5XForwardedFor模塊獲取來訪者真實IP地址的解決方案,首先需要下載與安裝插件F5XForwardedFor模塊,下載地址
- 根據自己的服務器操作係統版本將x86Release 或者x64Release目錄下的F5XFFHttpModule.dll和F5XFFHttpModule.ini拷貝到某個目錄,這裏假設為C:F5XForwardedFor,確保對IIS進程對該目錄有讀取權限。
選擇“IIS服務器”選項,按圖所示選擇“模塊”功能:
雙擊“模塊”功能,點擊“配置本機模塊”:
在彈出框中點擊“注冊”按鈕:
添加下載的DLL文件,如下圖:
添加完成後,勾選並點擊“確定”:
把這兩個DLL在 “API 和CGI限製”進行添加,並改為允許:
重啟IIS服務器,等待配置生效。
Apache配置方案
首先,安裝apache的一個第三方模塊“mod_rpaf”, 官方網站
wget https://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar zxvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
/alidata/server/httpd/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
修改apache配置/alidata/server/httpd/conf/httpd.conf,在最末尾添加:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips ip地址
RPAFheader X-Forwarded-For
//RPAFproxy_ips ip地址(這個ip地址首先不是負載均衡提供的公網ip,具體ip多少可以看一下apache日誌,通常會有2個 都要寫上)
添加完成後重啟apache
/alidata/server/httpd/bin/apachectl restart
具體案例
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 10.242.230.65 10.242.230.131
RPAFheader X-Forwarded-For
Nginx配置方案
Nginx作為負載均衡獲取真實ip是使用http_realip_module,默認一鍵安裝包安裝的Nginx是沒有安裝這個模塊的,需要重新重新編譯Nginx並加裝:
重新編譯Nginx增加 —with-http_realip_module
wget https://soft.phpwind.me/top/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=/alidata/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module
make
make install
kill -USR2 `cat /alidata/server/nginx/logs/nginx.pid`
kill -QUIT `cat /alidata/server/nginx/logs/ nginx.pid.oldbin`
修改nginx.conf
vi /alidata/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地址;(這個ip地址首先不是負載均衡提供的公網ip,具體ip多少可以看一下之前nginx日誌,如果有多個都要寫上。)
set_real_ip_from ip地址;(這個ip地址首先不是負載均衡提供的公網ip,具體ip多少可以看一下之前nginx日誌,如果有多個都要寫上。)
real_ip_header X-Forwarded-For;
重啟Nnginx
/alidata/server/nginx/sbin/nginx -s reload
Tomcat配置方案
開啟tomcat的X-Forwarded-For,在tomcat/conf/server.xml中,修改AccessLogValve日誌紀錄功能為如下內容:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T" resolveHosts="false"/>
最後更新:2016-12-01 22:33:24
上一篇:
源站保護__常見接入問題_Web 應用防火牆-阿裏雲
下一篇:
WAF源站負載均衡__常見接入問題_Web 應用防火牆-阿裏雲
GetBucketReferer__關於Bucket的操作_API 參考_對象存儲 OSS-阿裏雲
數據開發常見問題__常見問題_大數據開發套件-阿裏雲
獲取基本信息__獲取圖片信息_老版圖片服務手冊_對象存儲 OSS-阿裏雲
網站提示非法頁麵(黃、賭、毒)、被屏蔽,被掛黑鏈__產品常見問題_服務器安全(安騎士)-阿裏雲
實時路況_阿裏雲幫助中心-阿裏雲,領先的雲計算服務提供商
刪除堆棧失敗__常見問題_資源編排-阿裏雲
HTTPS證書報錯__錯誤說明_API 網關-阿裏雲
版本列表__Java_SDK_日誌服務-阿裏雲
隊列方式接收通知__接收消息通知_開發人員指南_視頻點播-阿裏雲
直播錄製__使用手冊_視頻直播-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲