Nginx反向代理之后無法獲取到真實的客戶端ip

nginx服務(wù)器經(jīng)常用于反向代理實現(xiàn)負(fù)載均衡,但是經(jīng)常出現(xiàn)的問題是反向代理之后,我們通過 request.getRemoteAddr() 取到的客戶端ip就變成了反向代理服務(wù)器的ip地址,而不是真實的客戶端地址。

原因就是nginx反向代理相當(dāng)于再真實客戶端與真實服務(wù)器中的一個連接中介的作用,將請求發(fā)到真實服務(wù)器的是實現(xiàn)反向代理的服務(wù)器,而不是真實客戶端了,此時,我們再通過直接獲取請求客戶端的ip、端口、協(xié)議等方法就變成了反向代理服務(wù)器的ip、端口、協(xié)議了,如此就與我們的初衷相違背,因此我們要做的就是再nginx反向代理中動態(tài)的將http 的header頭信息更改為真實的客戶端信息,之后在真實服務(wù)器上,我們就可以通過http 的 header 頭信息來獲取到真實的客戶端信息了。

在nginx 的配置文件 nginx.conf 做如下更改:

server {

? # 在每一個 location 配置里都需要

? location / {

? ? # host 修改為真實的域名和端口

? ? proxy_set_header Host $http_host;

? ? # 客戶端真實ip

? ? proxy_set_header X-Real-IP $remote_addr;

? ? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

? ? # 客戶端真實協(xié)議(http/https)

? ? proxy_set_header X-Forwarded-Proto $scheme;

? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容