X-Forwarded-For 和 X-Real-Ip 的差異

最近因為抓 client 的IP遇到一些問題,又從重新回來研究這兩個東西,才發現我之前針對 X-Real-Ip 的理解是錯誤的 XD,所以只好寫一下這篇筆記一下。

我們先假設一個場景:
使用者(1.1.1.1) --> CDN (2.2.2.2) --> API Gateway (3.3.3.3) --> Service (4.4.4.4)

這時候我們在 API Gateway 這個地方做接收這兩個值,他應該分別為

X-Forwarded-For: 1.1.1.1, 2.2.2.2 (他會把IP 一層一層的傳下去)
X-Real-Ip: 2.2.2.2 ( 只接收到前一個節點的 IP)

如果我們在 API Gateway 這個地方想抓到使用者的IP (1.1.1.1),我們應該抓取 X-Forwarded-For 裡面的第一個值