記一次Nginx代理轉發關於真實ip問題

服務器端使用sprignboot編寫,會將國內ip和國外ip分別跳轉到不一樣的連接(國內服務器)
配置域名之後,使用nginx代理轉發到該springboot應用的端口
最開始寫法以下:nginx

server {
    listen 80;
    server_name 配置的域名;
    
    location / {
        proxy_pass http://ip:port;
    }
}
複製代碼

後面發現不管無何都是識別成國內的 ip
後面百度發現,使用 nginx 轉發會有一個代理服務器的 ip 過去
因而改爲以下:spring

server {
    listen 80;
    server_name 配置的域名;
    
    location / {
        proxy_pass http://ip:port;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
複製代碼

就能夠實現國內外 i p跳轉到不一樣連接,將真實 ip 放到 header 中,後端經過識別真實Ip進行跳轉後端

具體可參照這篇文章 nginx proxy_set_header測試,查看分別在設置 X-Real-IP 和不設置 X-Real-IP 下獲取到的 ip 區別springboot

相關文章
相關標籤/搜索