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

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
主站蜘蛛池模板: 濉溪县| 固始县| 漳州市| 富宁县| 利津县| 柘荣县| 宜阳县| 嘉峪关市| 仙桃市| 沙田区| 鄱阳县| 玛曲县| 巴楚县| 梅河口市| 张家界市| 宁海县| 江孜县| 新绛县| 珲春市| 丹寨县| 南川市| 广州市| 阳朔县| 织金县| 齐齐哈尔市| 金山区| 靖宇县| 怀宁县| 德江县| 桂平市| 华蓥市| 顺昌县| 顺义区| 象山县| 恩平市| 沈丘县| 岳池县| 溧水县| 宜兴市| 兰州市| 西宁市|