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

通過NLB獲取客戶端真實(shí)IP

網(wǎng)絡(luò)型負(fù)載均衡NLB四層監(jiān)聽支持后端服務(wù)器獲取客戶端真實(shí)IP地址。通常情況下,在創(chuàng)建后端服務(wù)器組時開啟客戶端地址保持,后端服務(wù)器即可獲取客戶端真實(shí)IP地址。但當(dāng)客戶端使用IPv6地址訪問IPv4服務(wù)、NLB使用TCPSSL監(jiān)聽、NLB掛載IP類型后端服務(wù)器組時,需要在NLB監(jiān)聽與后端服務(wù)器同時開啟Proxy Protocol,后端服務(wù)器才可獲取客戶端真實(shí)IP地址。

獲取方法介紹

獲取客戶端真實(shí)IP

通過服務(wù)器組客戶端地址保持功能獲取

正常情況下,在創(chuàng)建 NLB 服務(wù)器組時,將開啟客戶端地址保持字段設(shè)置為開啟,此時在后端服務(wù)器上獲取的源IP即為客戶端真實(shí)IP地址。

部分特殊場景下,該功能無法使用,需要通過Proxy Protocol配置,后端服務(wù)器才能獲取客戶端真實(shí)IP地址,參見通過Proxy Protocol功能獲取

通過Proxy Protocol功能獲取

Proxy Protocol是一種通信協(xié)議,用于在代理服務(wù)器和后端服務(wù)器之間傳遞客戶端的原始網(wǎng)絡(luò)連接信息。

通常情況下,代理服務(wù)器在轉(zhuǎn)發(fā)客戶端請求到后端服務(wù)器時會重寫請求頭部,將客戶端的源IP地址和端口等信息替換為代理服務(wù)器自身的信息。這樣后端服務(wù)器就無法獲得客戶端的真實(shí)網(wǎng)絡(luò)連接信息。

而使用Proxy Protocol,代理服務(wù)器在轉(zhuǎn)發(fā)請求時將客戶端的原始網(wǎng)絡(luò)連接信息封裝在請求頭部中,發(fā)送給后端服務(wù)器。后端服務(wù)器通過解析Proxy Protocol頭部,就可以獲得客戶端的真實(shí)網(wǎng)絡(luò)連接信息,包括源IP地址、源端口以及傳輸協(xié)議等。

通過使用Proxy Protocol,后端服務(wù)器可以準(zhǔn)確獲取客戶端的原始網(wǎng)絡(luò)連接信息,從而進(jìn)行更準(zhǔn)確的日志記錄、訪問控制、流量監(jiān)控等操作。

重要
  • 注意Proxy Protocol需要代理服務(wù)器和后端服務(wù)器都支持該協(xié)議才能正常使用。如果后端服務(wù)器不具備解析Proxy Protocol協(xié)議能力,直接打開特性開關(guān),很可能會導(dǎo)致后端服務(wù)解析異常,從而影響服務(wù)可用性。

  • NLB監(jiān)聽支持通過Proxy Protocol攜帶原始連接信息(源IP、目的IP、源端口、目的端口等)并添加到TCP或UDP數(shù)據(jù)頭中,且不會丟棄或覆蓋任何原有數(shù)據(jù)。

  • NLB僅支持Proxy Protocol v2版本。Proxy Protocol v2版本支持多種傳輸協(xié)議,如TCP和UDP,更多信息,請參見The PROXY protocol。

以下場景,需要在NLB及后端服務(wù)器上開啟Proxy Protocol來獲取客戶端真實(shí)IP地址。

  • 客戶端使用IPv6地址訪問后端的IPv4服務(wù)

  • NLB使用TCPSSL監(jiān)聽(TCPSSL監(jiān)聽不能選擇已開啟客戶端地址保持功能的服務(wù)器組)

  • NLB掛載IP類型的后端服務(wù)器組(IP類型的服務(wù)器組不支持開啟客戶端地址保持功能)

操作步驟

通過服務(wù)器組客戶端地址保持功能配置

前提條件

  • 您已經(jīng)創(chuàng)建可用的NLB服務(wù)器組并添加了后端服務(wù)器。本文以創(chuàng)建了服務(wù)器類型的服務(wù)器組、后端協(xié)議為TCP、后端服務(wù)器為ECS、后端部署的應(yīng)用端口為80舉例說明,具體操作,請參見創(chuàng)建和管理服務(wù)器組。

步驟一:檢查服務(wù)器組已開啟客戶端地址保持功能

  1. 登錄網(wǎng)絡(luò)型負(fù)載均衡NLB控制臺

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

  3. 服務(wù)器組頁面,找到目標(biāo)服務(wù)器組,單擊服務(wù)器組ID。

  4. 在服務(wù)器組詳情頁面,查看到開啟客戶端地址保持字段為已開啟。如果是未開啟,可單擊編輯基本信息在配置頁面中開啟該功能。

步驟二:驗(yàn)證后端服務(wù)器可獲取客戶端真實(shí)IP

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

Nginx日志字段默認(rèn)配置示例如下:

http {
  # 默認(rèn)配置
  log_format  main  '$remote_addr- $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
	#...
}

Nginx日志文件默認(rèn)路徑為:/var/log/nginx/access.log

每行日志中第一個IP地址即為客戶端真實(shí)IP地址。

image.png

通過Proxy Protocol功能配置

前提條件

  • 您已經(jīng)創(chuàng)建可用的NLB服務(wù)器組并添加了后端服務(wù)器。本文以創(chuàng)建了服務(wù)器類型的服務(wù)器組、后端協(xié)議為TCP、后端服務(wù)器為ECS、后端部署的應(yīng)用端口為80舉例說明,具體操作,請參見創(chuàng)建和管理服務(wù)器組。

  • 您已經(jīng)創(chuàng)建NLB實(shí)例并為該實(shí)例添加了監(jiān)聽。本文以TCP監(jiān)聽、監(jiān)聽端口為80舉例說明,具體操作,請參見創(chuàng)建和管理NLB實(shí)例。

    說明
    • 啟用Proxy Protocol之前,請確保您的后端服務(wù)器支持Proxy Protocol v2版本,否則會導(dǎo)致新建連接失敗。

    • 如果實(shí)例的多個NLB監(jiān)聽掛載同一組后端服務(wù)器,必須將所有實(shí)例的監(jiān)聽都開啟Proxy Protocol功能。

    • Nginx Plus R16及以后版本或者開源Nginx 1.13.11及以后版本支持Proxy Protocol v2版本。

步驟一:為監(jiān)聽開啟Proxy Protocol

  1. 登錄網(wǎng)絡(luò)型負(fù)載均衡NLB控制臺

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

  3. 實(shí)例頁面,找到目標(biāo)實(shí)例,單擊實(shí)例ID。

  4. 在實(shí)例詳情頁面,單擊監(jiān)聽頁簽,找到目標(biāo)監(jiān)聽,單擊監(jiān)聽ID。

  5. 在監(jiān)聽詳情頁面,查看到開啟ProxyProtocol字段為已開啟。如果未開啟,可單擊編輯監(jiān)聽在彈出的對話框中開啟該功能。

步驟二:為后端服務(wù)器開啟Proxy Protocol

此處以CentOS 7.9操作系統(tǒng)、Nginx 1.20.1 版本配置為例介紹。具體請以您實(shí)際使用的環(huán)境為準(zhǔn)。

  1. 登錄后端服務(wù)器,執(zhí)行nginx -t命令查看配置文件所在路徑。默認(rèn)通常為 /etc/nginx/nginx.conf,具體請以實(shí)際環(huán)境為準(zhǔn)。

  2. 修改配置文件中的Proxy Protocol內(nèi)容并保存,修改點(diǎn)可參考下方說明。

    http {
      # 確保設(shè)置$proxy_protocol_addr,該變量用于記錄客戶端真實(shí)IP
      log_format  main  '$proxy_protocol_addr - $remote_addr- $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
      # 以80監(jiān)聽端口為例,增加proxy_protocol字段
      server {
        listen 80   proxy_protocol;
        #...
      }
    }
    
  3. 執(zhí)行sudo nginx -s reload命令,重新加載Nginx配置文件。

步驟三:驗(yàn)證后端服務(wù)器可獲取客戶端真實(shí)IP

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

Nginx日志文件默認(rèn)路徑為:/var/log/nginx/access.log

每行日志中,$proxy_protocol_addr變量對應(yīng)的IP地址即為客戶端真實(shí)IP地址。

image.png

Proxy Protocol v2報(bào)文參考

如您未使用上述示例中的服務(wù)器,您可參考Proxy Protocol v2報(bào)文結(jié)構(gòu)及The PROXY protocol進(jìn)行自定義解析,具體請參考您所使用的服務(wù)器的官方資料。

  • 攜帶客戶端IPv4地址的Proxy Protocol v2二進(jìn)制頭格式如下所示:IPv4

  • 攜帶客戶端IPv6地址的Proxy Protocol v2二進(jìn)制頭格式如下所示:IPv6

常見問題

ACK場景下使用負(fù)載均衡時如何獲取客戶端真實(shí)IP

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

相關(guān)文檔

不同負(fù)載均衡類型獲取客戶端真實(shí)IP方式有所不同: