Nginx代理后如何獲取客戶端真實IP地址
1、場景
在項目實際應用中,我們可能會需要獲取到用戶也就是客戶端的真實IP地址,比如記錄系統(tǒng)操作日志等情況。
2、使用
通常情況下我們可以使用以下方式來獲取IP地址
request.getRemoteAddr()
但是當我們使用Nginx反向代理項目地址后,使用以上方法只能獲取到Nginx服務器的IP地址,并不是客戶端的IP地址。
3、解決
解決方法很簡單,同樣也是在Nginx中進行配置,然后在Java中獲取即可。
首先在nginx.conf配置中添加一行即可:
proxy_set_header X-Real-IP $remote_addr;
添加位置如下:
可以看到我這里還添加了其他的 proxy_set_header 配置,后面都可以自行打印看下效果。
接下來就是在程序中獲取真實IP地址了,使用以下代碼即可獲取到:
String realIP = request.getHeader("X-Real-IP");
注意:getHeader()中的參數(shù)名就是nginx.conf中配置的名字
4、解釋
一個請求肯定是可以分為請求頭和請求體的,而我們客戶端的IP地址信息一般都是存儲在請求頭里的。而 proxy_set_header 語法就是允許重新定義或者添加發(fā)往后端服務器的請求頭,所以在 java端,需要獲取 proxy_set_header 的參數(shù)時,需要使用 request.getHeader()。
總結(jié)
到此這篇關(guān)于Nginx代理后如何獲取客戶端真實IP地址的文章就介紹到這了,更多相關(guān)Nginx獲取客戶端真實IP內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx proxy_pass反向代理配置中url后加不加/的區(qū)別介紹
這篇文章主要給大家介紹了關(guān)于nginx proxy_pass反向代理配置中url后加不加/的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-11-11Nginx?生產(chǎn)環(huán)境安全配置加固的實現(xiàn)
本文主要介紹了Nginx?生產(chǎn)環(huán)境安全配置加固的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-03-03nginx里的rewrite跳轉(zhuǎn)的實現(xiàn)
這篇文章主要介紹了nginx里的rewrite跳轉(zhuǎn)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11解決httpd占用80端口導致Nginx啟動失敗報錯的解決辦法
今天在建自己小網(wǎng)站時啟動Nginx時,發(fā)現(xiàn)其報下列錯誤,意思是因為80端口被占用導致Nginx啟動失敗,所以本文小編給大家介紹介紹如何解決解決httpd占用80端口導致Nginx啟動不成功報nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)2023-11-11