1、場景
在項(xiàng)目實(shí)際應(yīng)用中,我們可能會需要獲取到用戶也就是客戶端的真實(shí)IP地址,比如記錄系統(tǒng)操作日志等情況。
2、使用
通常情況下我們可以使用以下方式來獲取IP地址
request.getRemoteAddr()
但是當(dāng)我們使用Nginx反向代理項(xiàng)目地址后,使用以上方法只能獲取到Nginx服務(wù)器的IP地址,并不是客戶端的IP地址。
3、解決
解決方法很簡單,同樣也是在Nginx中進(jìn)行配置,然后在Java中獲取即可。
首先在nginx.conf配置中添加一行即可:
proxy_set_header X-Real-IP $remote_addr;
添加位置如下:
?可以看到我這里還添加了其他的?proxy_set_header 配置,后面都可以自行打印看下效果。
接下來就是在程序中獲取真實(shí)IP地址了,使用以下代碼即可獲取到:
String realIP = request.getHeader("X-Real-IP");
注意:getHeader()中的參數(shù)名就是nginx.conf中配置的名字
文章來源:http://www.zghlxwxcb.cn/news/detail-410407.html
4、解釋
?一個(gè)請求肯定是可以分為請求頭和請求體的,而我們客戶端的IP地址信息一般都是存儲在請求頭里的。而?proxy_set_header 語法就是允許重新定義或者添加發(fā)往后端服務(wù)器的請求頭,所以在 java端,需要獲取 proxy_set_header 的參數(shù)時(shí),需要使用 request.getHeader()。文章來源地址http://www.zghlxwxcb.cn/news/detail-410407.html
到了這里,關(guān)于Nginx代理后獲取客戶端真實(shí)IP地址的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!