nginx代理后端路徑獲取IP為127.0.0.1問題
更新時間:2025年02月12日 09:13:05 作者:worilb
文章討論了在使用Nginx作為反向代理時,如何正確配置以避免在前端路徑A/api訪問后端時丟失真實的IP地址,通過有效的Nginx配置,可以確保在前后端分離的場景中,客戶端通過前端路徑訪問后端時,后端能夠正確獲取客戶端的真實IP地址,示例配置展示了如何實現(xiàn)這一目標
nginx代理后端路徑獲取IP為127.0.0.1
前后端分離場景,前端路徑為A,后端真實路徑為B,前端使用相對路徑/api訪問后端,配置為A/api。
此時客戶端通過A/api訪問會丟失真實的IP,而直接訪問后臺真實路徑B不會。
示例:
無效配置
#此配置后臺無法獲取客戶端真實IP
server {
listen 5555;
#前端
location / {
root xx/xx;
index index.html;
}
#后臺
location /api/ {
proxy_pass http://127.0.0.1:6666/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}加上如下配置
#保留代理之前的host 包含客戶端真實的域名和端口號 proxy_set_header Host $host; #保留代理之前的真實客戶端ip proxy_set_header X-Real-IP $remote_addr; #這個Header和X-Real-IP類似,但它在多級代理時會包含真實客戶端及中間每個代理服務(wù)器的IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #表示客戶端真實的協(xié)議(http還是https) proxy_set_header X-Forwarded-Proto $scheme;
有效配置
server {
listen 5555;
#前端
location / {
root xx/xx;
index index.html;
}
#后臺
location /api/ {
#保留代理之前的host 包含客戶端真實的域名和端口號
proxy_set_header Host $host;
#保留代理之前的真實客戶端ip
proxy_set_header X-Real-IP $remote_addr;
#這個Header和X-Real-IP類似,但它在多級代理時會包含真實客戶端及中間每個代理服務(wù)器的IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#表示客戶端真實的協(xié)議(http還是https)
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:6666/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
在Nginx用htpasswd對網(wǎng)站進行密碼保護的設(shè)置方法
很多時候我們需要對一些網(wǎng)站進行密碼保護,比如團隊內(nèi)部的站點、demo站點等等。這里所說的密碼保護是服務(wù)器級的,并非網(wǎng)站應(yīng)用層的注冊登錄那一套,而是利用服務(wù)器配置和htpasswd文件來實現(xiàn)訪問的密碼驗證2013-06-06
由于Nginx配置文件問題導(dǎo)致打不開網(wǎng)站unknown directive的解決
這篇文章主要介紹了由于Nginx配置文件問題導(dǎo)致打不開網(wǎng)站unknown directive,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
Nginx反向代理在Web應(yīng)用中的實戰(zhàn)分享
本文將介紹Nginx反向代理的基本原理和配置,以及如何利用Nginx實現(xiàn)高可用性和故障轉(zhuǎn)移,最后,我們將探討如何監(jiān)控Nginx反向代理的性能并進行日志分析,需要的朋友可以參考下2024-08-08

