成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

tomcat中如何獲取客戶端真實的IP

2015-08-14 16:12:20來源:威易網作者:joe

有時候我們需要需要獲得客戶端真實的IP,例如認證。一般情況下,在tomcat中獲得HTTP訪問時客戶端的IP方法如下:

有時候我們需要需要獲得客戶端真實的IP,例如認證。

一般情況下,在tomcat中獲得HTTP訪問時客戶端的IP方法如下:

httpServletRequest.getRemoteHost()

然而,經常我們會配置Apache或nginx代理,這時候就通過上面的方法就無法獲得真實的客戶端IP。通過nginx代理,通過httpServletRequest.getRemoteHost()獲得是代理服務器的地址,Apache是客戶端真實的IP。

nginx下的配置

對于nginx,我們可以通過一下配置:

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

這樣,在HTTP的header中就增加了一個X-Forwarded-For,這個保存著客戶端的真實IP,然后在tomcat中通過以下方法:

String host = httpServletRequest.getHeader("X-Forwarded-For");

host = null == host ? httpServletRequest.getRemoteHost() : host;

Apache下的配置

通過Apache代理時,Apache會自動增加X-Forwarded-For作為客戶端的IP,但這個IP雖然是客戶端IP,但不是客戶端真實的IP,如果客戶端在內網,這個IP則是客戶端內網的IP,為了解決這個問題,在Apache代理前激將X-Forwarded-For禁止,這樣依舊可以通過httpServletRequest.getRemoteHost()獲得客戶端的真實IP。由于Tomcat中無法知道是通過Apache代理還是nginx代理,所有,還是通過上面的方式進行IP的獲得。Apache的配置如下:

RequestHeader unset X-Forwarded-For

這樣就可以解決獲取IP的問題。

關鍵詞:tomcat
主站蜘蛛池模板: 通海县| 保德县| 和静县| 宜兴市| 马关县| 长乐市| 台中县| 卓尼县| 巢湖市| 墨江| 瓮安县| 台安县| 湘潭市| 永安市| 贵州省| 伊金霍洛旗| 本溪市| 平乡县| 九龙县| 神木县| 合江县| 正安县| 平利县| 荆门市| 乐东| 安徽省| 宜城市| 寿宁县| 古浪县| 炉霍县| 察隅县| 都江堰市| 拜城县| 密云县| 四子王旗| 塔河县| 宁安市| 张家川| 临西县| 邯郸市| 巴塘县|