X-Forwarded-For X-Forwarded-For è un'intestazione di estensione. Il protocollo HTTP/1.1 (RFC 2616) non lo definisce, è stato originariamente introdotto da Squid, un software proxy di caching, per rappresentare l'IP reale del richiedente HTTP, ed è ora diventato uno standard de facto, ampiamente utilizzato dai principali proxy HTTP, dal bilanciamento del carico e da altri servizi di inoltro, e inserito nello standard RFC 7239 (Forwarded HTTP Extension).
In una struttura di rete con più livelli di proxy (ad esempio, un CDN e un indirizzo IP Anti-DDoS Pro collegati a un firewall per applicazioni web), gli indirizzi IP di tutti i proxy vengono aggiunti al campo x-forwarded-for. Questo perché il proxy server scrive l'indirizzo IP proxy per ogni inoltro.
Il formato è il seguente:
X-Forwarded-For: client_ip, proxy1_ip, proxy2_ip Forgia X-Inoltrata-Per
Aggiungiamo l'intestazione richiesta X-Forwarded-For tramite postman, che crea qualcosa del genere:
Ho usato il servizio SLB di Alibaba Cloud, SLB -> IIS, se otteniamo il primo indirizzo IP deve essere errato, l'ultimo indirizzo IP è il vero indirizzo IP del client.
(Nella vita reale, devi ottenerlo secondo la tua architettura, e ottenere l'indirizzo IP reale del client dipende da quanti livelli di proxy hai attraversato.Credi nel primo livello)
Per usare nginx come reverse proxy, puoi impostarlo come segue:
Il server proxy più esterno non si fida dell'input X-Forwarded-For del client, sovrascrivendone direttamente invece di aggiungerlo.
|