日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過ALB獲取客戶端真實IP

當使用ALB監聽轉發流量時,您可通過HTTP頭部的X-Forwarded-For字段獲取客戶端真實IP地址。

獲取方法介紹

七層負載均衡(HTTP或HTTPS協議)支持在HTTP頭部的X-Forwarded-For字段保留客戶端真實IP信息,服務器進行相應配置后即可獲取到客戶端真實IP地址。

X-Forwarded-For字段格式如下:

X-Forwarded-For: <客戶端真實IP, 代理服務器1-IP, 代理服務器2-IP,...>

當使用此方式獲取客戶端真實IP時,獲取的第一個地址就是客戶端真實IP。

操作步驟

步驟一:檢查監聽已開啟通過X-Forwarded-For獲取功能

  1. 登錄應用型負載均衡ALB控制臺

  2. 在頂部菜單欄,選擇實例所屬的地域。

  3. 實例頁面,找到目標實例,單擊實例ID。

  4. 在實例詳情頁面,單擊監聽頁簽,找到目標監聽,單擊監聽ID。

  5. 在監聽詳情頁面,查看到附加HTTP頭字段包括開啟通過X-Forwarded-For頭字段獲取來訪者客戶端IP

    說明

    ALB默認開啟通過X-Forwarded-For頭字段獲取客戶端真實IP功能,不支持關閉。

步驟二:配置后端服務器

請根據您所使用的服務器類型,選擇對應的操作步驟。

配置Nginx服務器

此處以CentOS 7.9操作系統、Nginx 1.20.1 版本配置為例介紹。具體請以您實際使用的環境為準。

  1. 在服務器執行nginx -V | grep http_realip_module命令,檢查Nginx服務器是否安裝了http_realip_module模塊。Nginx使用http_realip_module模塊解析X-Forwarded-For記錄。

    如果返回信息中包括--with-http_realip_module,表示已安裝http_realip_module模塊,可進行下一步。

    已安裝http_realip_module模塊返回信息示例

    nginx version: nginx/1.20.1
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
    built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
    TLS SNI support enabled
    configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-google_perftools_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'
    
    說明
    • Nginx 1.0.4 版本(2011年)開始支持http_realip_module 模塊。如果您使用的Nginx版本過老,建議您備份配置數據并升級Nginx版本。

    • 如果未安裝http_realip_module模塊,需要重新編譯安裝Nginx并安裝http_realip_module 模塊。操作較為繁瑣,建議您使用類似yum的包管理器安裝Nginx。

  2. 修改Nginx服務配置文件并保存,修改點可參考下方說明。執行nginx -t命令查看配置文件所在路徑,默認通常為 /etc/nginx/nginx.conf,具體請以實際環境為準。

    http {
      # 確保設置$http_x_forwarded_for,該變量用于記錄X-Forwarded-For的值
      log_format  main  '$remote_addr- $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
      
      # ...
    }
    

  3. 執行sudo nginx -s reload命令,重新加載Nginx配置文件。

配置Apache服務器

此處以CentOS 7.9操作系統、Apache 2.4.6 版本配置為例介紹。具體請以您實際使用的環境為準。

  1. 在服務器執行httpd -M | grep remoteip_module命令,檢查Apache服務器是否安裝了remoteip_module模塊。Apache使用remoteip_module模塊解析X-Forwarded-For記錄。

    如果返回信息中包括remoteip_module (shared),表示已安裝該模塊,可進行下一步。

    說明
    • Apache 2.4.0 版本(2012年)開始支持remoteip_module 模塊。如果您使用的Apache版本過老,建議您備份配置數據并升級Apache版本。

    • 如果未安裝remoteip_module 模塊,需要重新編譯安裝Apache并安裝remoteip_module 模塊。操作較為繁瑣,建議您使用類似yum的包管理器安裝Apache。

  2. 修改Apache服務配置文件并保存,修改點可參考下方說明。默認通常為/etc/httpd/conf/httpd.conf,具體請以實際環境為準。

    # ...
    <IfModule log_config_module>
    	# 增加%{X-Forwarded-For}i ,用于記錄X-Forwarded-For信息
      LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
      LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b" common
    	#...
    </IfModule>
    # ...

  3. 執行sudo systemctl restart httpd命令,重啟apache服務。

配置IIS服務器

此處以Windows Server 2016操作系統配置為例介紹。具體請以您實際使用的環境為準。

  1. 下載并解壓F5XForwardedFor文件

  2. 根據自己的服務器操作系統版本將x86\x64\目錄下的F5XFFHttpModule.dllF5XFFHttpModule.ini拷貝到某個目錄,確保IIS進程對該目錄有讀取權限。

  3. 服務器管理器中,打開IIS管理器

  4. 選中服務器,雙擊模塊功能。

  5. 單擊配置本機模塊,然后在彈出的對話框中,單擊注冊

  6. 添加下載的.dll文件。

    1. 輸入文件名稱,選擇路徑之后,單擊確定

    2. 此時系統會自動選中新注冊的模塊,請單擊確定注冊模塊

  7. 回到服務器主頁,雙擊日志模塊,配置日志格式,在日志中記錄X-Forwarded-For字段信息。

    1. 單擊選擇字段

      image.png

    2. 單擊左下角添加字段,添加如下日志字段并確認。

      image.png

    3. 單擊右上角應用,完成修改。

  8. 重啟IIS服務器,等待配置生效。

步驟三:驗證后端服務器已獲取客戶端真實IP

請根據您所使用的服務器類型,選擇對應的操作步驟。

Nginx服務器

當Nginx作為后端服務器時,您可以通過檢查Nginx日志來判斷是否成功獲取到了客戶端的真實IP地址。

Nginx日志文件默認路徑為:/var/log/nginx/access.log

每行日志中,$http_x_forwarded_for變量對應的字段中,第一個IP地址即為客戶端真實IP地址。

image.png

Apache服務器

當Apache作為后端服務器時,您可以通過檢查Apache日志來判斷是否成功獲取到了客戶端的真實IP地址。

Apache日志文件默認路徑為:/var/log/httpd/access_log

每行日志中,%{X-Forwarded-For}i 對應的字段中,第一個IP地址即為客戶端真實IP地址。

image.png

IIS服務器

當IIS作為后端服務器時,您可以通過檢查IIS日志來判斷是否成功獲取到了客戶端的真實IP地址。

IIS日志文件路徑,可在日志模塊查看。

image.png

每行日志中,X-Forwarded-For對應的字段中,第一個IP地址即為客戶端真實IP地址。

image.png

常見問題

為什么有100開頭的IP在頻繁訪問ECS實例

負載均衡系統除了會通過系統服務器的內網IP將來自外部的訪問請求轉到后端ECS實例之外,還會對ECS實例進行健康檢查和可用性監控,這些訪問的來源都是由負載均衡系統發起的。

負載均衡系統的地址段為100.64.0.0/10(100.64.0.0/10是阿里云保留地址,其他用戶無法分配到該網段內,不會存在安全風險),所以會有很多100開頭的IP地址訪問ECS實例。

為了確保您對外服務的可用性,請確保您的所有服務器均對上述地址的訪問配置了安全組放行規則。

與WAF/CDN/GA等配合使用時,如何獲取客戶端真實IP

流量在經過負載均衡前,如果經過WAF、CDN、GA等轉發,也可以通過X-Forwarded-For字段獲取客戶端真實IP地址,這些產品默認透傳X-Forwarded-For字段,無需進行其他配置。

如果您業務安全性要求較高,想避免X-Forwarded-For偽造,您可通過在其他產品中指定header字段記錄客戶端真實IP。假如您采用客戶端 > CDN > WAF > 負載均衡 > ECS架構時,CDN透傳HTTP頭部的Ali-Cdn-Real-Ip字段,在WAF中接入時客戶端IP判定方式選擇指定header字段為Ali-Cdn-Real-Ip,后端Nginx服務器配置日志變量為$http_Ali_Cdn_Real_Ip,日志中獲取的亦為客戶端真實IP。

您也可以通過其他多種手段加固系統安全性,例如:

  • 驗證和過濾XFF頭部:在后端服務器中,對XFF頭部進行驗證和過濾,以確保它是合法且可信的。您可以檢查XFF頭部的格式和IP地址,拒絕非法或可疑的值。

  • 使用防火墻和訪問控制列表:在負載均衡器和后端服務器之間,使用防火墻和訪問控制列表來限制和過濾針對XFF頭部的惡意請求。

  • SSL/TLS加密:使用SSL/TLS加密來保護通信,包括XFF頭部的傳輸。這樣可以減少中間人攻擊和數據篡改的風險。

ACK場景下使用負載均衡時如何獲取客戶端真實IP

當您在ACK集群中使用負載均衡時,獲取方式相同,具體操作有部分差異,具體操作請參考ACK容器集群Pod如何獲取客戶端真實IP?

相關文檔

不同負載均衡類型獲取客戶端真實IP方式有所不同: