nginx代理后端路徑獲取IP為127.0.0.1問題
更新時間:2025年02月12日 09:13:05 作者:worilb
文章討論了在使用Nginx作為反向代理時,如何正確配置以避免在前端路徑A/api訪問后端時丟失真實的IP地址,通過有效的Nginx配置,可以確保在前后端分離的場景中,客戶端通過前端路徑訪問后端時,后端能夠正確獲取客戶端的真實IP地址,示例配置展示了如何實現(xiàn)這一目標(biāo)
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)文章
Linux centos7環(huán)境下Nginx安裝教程
這篇文章主要為大家詳細介紹了Linux centos7環(huán)境下Nginx安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03nginx常見內(nèi)置變量$uri和$request_uri的使用
本文主要介紹了nginx常見內(nèi)置變量$uri和$request_uri的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07nginx將https協(xié)議反向代理到http協(xié)議請求上
在項目正式上線時,一般會申請域名和證書來實現(xiàn)https的服務(wù),本文主要介紹了nginx將https協(xié)議反向代理到http協(xié)議請求上,具有一定的參考價值,感興趣的可以了解一下2024-05-05