精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java面試-如何獲取客戶端真實IP

網(wǎng)絡 通信技術 后端
針對分享,我們希望能根據(jù)各個城市或者地區(qū),能有不同的分享文案,辨識地區(qū)的功能如果由服務器來完成的話,我們就需要知道客戶端的真實IP。今天我們就來看看服務器是如何獲取到客戶端的真實IP的。

在進行一些小游戲開發(fā)時,我們經(jīng)常比較關注的一個功能便是分享。針對分享,我們希望能根據(jù)各個城市或者地區(qū),能有不同的分享文案,辨識地區(qū)的功能如果由服務器來完成的話,我們就需要知道客戶端的真實IP。今天我們就來看看服務器是如何獲取到客戶端的真實IP的。

[[280536]]

nginx配置

首先,一個請求肯定是可以分為請求頭和請求體的,而我們客戶端的IP地址信息一般都是存儲在請求頭里的。如果你的服務器有用Nginx做負載均衡的話,你需要在你的location里面配置X-Real-IP和X-Forwarded-For請求頭:

  1. location ^~ /your-service/ { 
  2. proxy_set_header X-Real-IP $remote_addr; 
  3. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  4. proxy_pass http://localhost:60000/your-service/; 

1. X-Real-IP

在《實戰(zhàn)nginx》中,有這么一句話:

經(jīng)過反向代理后,由于在客戶端和web服務器之間增加了中間層,因此web服務器無法直接拿到客戶端的ip,通過$remote_addr變量拿到的將是反向代理服務器的ip地址。

這句話的意思是說,當你使用了nginx反向服務器后,在web端使用request.getRemoteAddr()(本質上就是獲取$remote_addr),取得的是nginx的地址,即$remote_addr變量中封裝的是nginx的地址,當然是沒法獲得用戶的真實ip的。但是,nginx是可以獲得用戶的真實ip的,也就是說nginx使用$remote_addr變量時獲得的是用戶的真實ip,如果我們想要在web端獲得用戶的真實ip,就必須在nginx里作一個賦值操作,即我在上面的配置:

  1. proxy_set_header X-Real-IP $remote_addr; 

2. X-Forwarded-For

X-Forwarded-For變量,這是一個squid開發(fā)的,用于識別通過HTTP代理或負載平衡器原始IP一個連接到Web服務器的客戶機地址的非rfc標準,如果有做X-Forwarded-For設置的話,每次經(jīng)過proxy轉發(fā)都會有記錄,格式就是client1,proxy1,proxy2以逗號隔開各個地址,由于它是非rfc標準,所以默認是沒有的,需要強制添加。在默認情況下經(jīng)過proxy轉發(fā)的請求,在后端看來遠程地址都是proxy端的ip 。也就是說在默認情況下我們使用request.getAttribute("X-Forwarded-For")獲取不到用戶的ip,如果我們想要通過這個變量獲得用戶的ip,我們需要自己在nginx添加配置:

  1. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

意思是增加一個$proxy_add_x_forwarded_for到X-Forwarded-For里去,注意是增加,而不是覆蓋,當然由于默認的X-Forwarded-For值是空的,所以我們總感覺X-Forwarded-For的值就等于$proxy_add_x_forwarded_for的值,實際上當你搭建兩臺nginx在不同的ip上,并且都使用了這段配置,那你會發(fā)現(xiàn)在web服務器端通過request.getAttribute("X-Forwarded-For")獲得的將會是客戶端ip和第一臺nginx的ip。

3. 那么$proxy_add_x_forwarded_for又是什么?

$proxy_add_x_forwarded_for變量包含客戶端請求頭中的X-Forwarded-For與$remote_addr兩部分,他們之間用逗號分開。

舉個例子,有一個web應用,在它之前通過了兩個nginx轉發(fā),www.linuxidc.com即用戶訪問該web通過兩臺nginx。

在第一臺nginx中,使用:

  1. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

現(xiàn)在的$proxy_add_x_forwarded_for變量的X-Forwarded-For部分是空的,所以只有$remote_addr,而$remote_addr的值是用戶的ip,于是賦值以后,X-Forwarded-For變量的值就是用戶的真實的ip地址了。

到了第二臺nginx,使用:

  1. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

現(xiàn)在的$proxy_add_x_forwarded_for變量,X-Forwarded-For部分包含的是用戶的真實ip,$remote_addr部分的值是上一臺nginx的ip地址,于是通過這個賦值以后現(xiàn)在的X-Forwarded-For的值就變成了“用戶的真實ip,第一臺nginx的ip”,這樣就清楚了吧。

服務器獲取真實IP

代碼為:

  1. public static String getIpAddress(HttpServletRequest request) { 
  2. String Xip = request.getHeader("X-Real-IP"); 
  3. String XFor = request.getHeader("X-Forwarded-For"); 
  4. if (!Strings.isNullOrEmpty(XFor) && !"unKnown".equalsIgnoreCase(XFor)) { 
  5. //多次反向代理后會有多個ip值,第一個ip才是真實ip 
  6. int index = XFor.indexOf(","); 
  7. if (index != -1) { 
  8. return XFor.substring(0, index); 
  9. } else { 
  10. return XFor; 
  11. XFor = Xip
  12. if (!Strings.isNullOrEmpty(XFor) && !"unKnown".equalsIgnoreCase(XFor)) { 
  13. return XFor; 
  14. if (Strings.nullToEmpty(XFor).trim().isEmpty() || "unknown".equalsIgnoreCase(XFor)) { 
  15. XFor = request.getHeader("Proxy-Client-IP"); 
  16. if (Strings.nullToEmpty(XFor).trim().isEmpty() || "unknown".equalsIgnoreCase(XFor)) { 
  17. XFor = request.getHeader("WL-Proxy-Client-IP"); 
  18. if (Strings.nullToEmpty(XFor).trim().isEmpty() || "unknown".equalsIgnoreCase(XFor)) { 
  19. XFor = request.getHeader("HTTP_CLIENT_IP"); 
  20. if (Strings.nullToEmpty(XFor).trim().isEmpty() || "unknown".equalsIgnoreCase(XFor)) { 
  21. XFor = request.getHeader("HTTP_X_FORWARDED_FOR"); 
  22. if (Strings.nullToEmpty(XFor).trim().isEmpty() || "unknown".equalsIgnoreCase(XFor)) { 
  23. XFor = request.getRemoteAddr(); 
  24. return XFor; 

我們來看看各個請求頭的含義:

  • X-Real-IP:nginx代理一般會加上此請求頭。
  • X-FORWARDED-FOR:這是一個Squid開發(fā)的字段,只有在通過了HTTP代理或者負載均衡服務器時才會添加該項。
  • Proxy-Client-IP 和 WL-Proxy-Client-IP:這個一般是經(jīng)過apache http服務器的請求才會有,用apache http做代理時一般會加上Proxy-Client-IP請求頭,而WL-Proxy-Client-IP是它的weblogic插件加上的頭。

HTTPCLIENTIP

有些代理服務器會加上此請求頭。在網(wǎng)上搜了一下,有一個說法是:

這是普通的 http header,偽造起來很容易,不要輕易信任用戶輸入。 curl -H 'client-ip: 8.8.8.8' lidian.club/phpinfo.php | grep _SERVER 你就能看到 _SERVER["HTTP_CLIENT_IP"] 了。 client-ip 和 client-host 是在 NAPT 還沒普及的年代,企業(yè)內網(wǎng)假設的 http 透明代理,傳給服務器的 header,只有極少數(shù)廠家用過,從來不是標準,也從來沒成為過事實標準。 (大家最熟悉的事實標準就是 x-forwarded-for) 后來出現(xiàn)的 web proxy 也沒見用過這個 header。 TCP/IP Illustrated Vol 3 沒有講過這個 header,網(wǎng)上的傳言不可信。 可考的最早痕跡出現(xiàn)在2005年,日本一部 Perl/CGI 秘籍(9784798010779,270頁)通過 client-ip 與 via 兩個 header 屏蔽代理用戶訪問。

簡稱XFF頭,它代表客戶端,也就是HTTP的請求端真實的IP,只有在通過了HTTP 代理(比如APACHE代理)或者負載均衡服務器時才會添加該項。它不是RFC中定義的標準請求頭信息,在squid緩存代理服務器開發(fā)文檔中可以找到該項的詳細介紹。如果有該條信息, 說明您使用了代理服務器,地址就是后面的數(shù)值。可以偽造。標準格式如下:X-Forwarded-For: client1, proxy1, proxy2

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2023-11-15 13:50:07

服務端IP

2025-08-28 08:26:47

2018-12-19 10:31:32

客戶端IP服務器

2011-11-30 15:43:40

JavaJSP

2009-12-08 16:47:06

WCF IP

2010-02-22 11:10:17

WCF獲取客戶端IP

2009-12-21 15:53:56

WCF獲取客戶端IP

2010-12-21 11:03:15

獲取客戶端證書

2010-02-24 16:17:09

WCF獲取客戶端IP

2010-08-31 16:29:40

DHCP客戶端

2011-08-25 13:42:57

IP隧道IPIPGRE

2009-12-03 10:09:47

PHP獲取客戶端IP

2024-05-06 08:00:00

C#IP地址

2010-12-31 14:23:57

Exchange Se

2013-03-13 10:51:44

瘦客戶端VDI

2011-08-17 10:10:59

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2010-12-17 10:16:33

OpenVAS

2014-08-11 16:35:35

KafkaJava客戶端

2010-05-31 10:11:32

瘦客戶端
點贊
收藏

51CTO技術棧公眾號

久久99久久人婷婷精品综合| 免费污视频在线| 国内成+人亚洲+欧美+综合在线| 久久资源免费视频| 久久久高清视频| 欧美三区四区| 亚洲一区二区美女| 日韩精品一区二区三区外面 | 欧美午夜视频一区二区| 午夜精品一区二区三区在线观看| 亚洲AV无码精品国产| 久久久亚洲一区| 欧美国产日韩中文字幕在线| 精品成人无码一区二区三区| xxxxxhd亚洲人hd| 欧美三级日韩在线| 久久久性生活视频| 黄色免费网站在线| 久久夜色精品国产噜噜av| 亚洲最大av在线| 中文在线字幕免费观| 亚洲人成在线影院| 欧美成人性色生活仑片| 国产1区2区在线观看| 黑人久久a级毛片免费观看| 欧美日韩高清影院| 热久久精品国产| 超碰在线97国产| 亚洲视频一区二区免费在线观看| 精品在线不卡| 精品欧美在线观看| 久久av中文字幕片| 日韩暖暖在线视频| 99热只有这里有精品| 欧美日一区二区在线观看 | 国内精品国语自产拍在线观看| 中文字幕乱码中文字幕| 久久久久国产精品一区三寸| 午夜精品三级视频福利| 久草网在线观看| 99久久亚洲精品蜜臀| 亚洲天堂成人在线| 中文字幕免费高清| 青青久久av| 亚洲福利在线看| 亚洲国产精品第一页| 亚洲精品国产九九九| 日韩午夜在线播放| 日本中文字幕在线不卡| 豆花视频一区| 欧美一级xxx| 三上悠亚 电影| 人人爱人人干婷婷丁香亚洲| 欧美一三区三区四区免费在线看 | 精品视频成人| 91精品国产色综合久久久蜜香臀| 欧美一级视频在线| 99久久999| 欧美一个色资源| 久久久久中文字幕亚洲精品| av成人app永久免费| 精品少妇一区二区三区在线视频| 日批视频免费看| 国产精品一区二区三区美女| 亚洲国产精品成人一区二区| 内射中出日韩无国产剧情| 欧洲精品一区| 永久555www成人免费| 后入内射无码人妻一区| 欧美一区网站| 隔壁老王国产在线精品| 在线观看免费av片| 免费成人性网站| 亚洲综合精品一区二区| 内射无码专区久久亚洲| 91亚洲精品乱码久久久久久蜜桃 | 中文字幕99页| 爽爽窝窝午夜精品一区二区| 国产一区二区三区欧美| 黑人狂躁日本娇小| 亚洲国产影院| 国产精品美女www爽爽爽视频| 91在线公开视频| 波多野结衣在线aⅴ中文字幕不卡| 九色一区二区| 生活片a∨在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 久久免费视频3| 免费日韩成人| 亚洲国产日韩欧美在线动漫| 蜜臀久久99精品久久久久久| 欧美激情五月| 国产suv精品一区二区| 99在线小视频| 久久久久综合网| 加勒比海盗1在线观看免费国语版| 欧美a级在线观看| 欧美精品1区2区3区| 午夜一区二区三区免费| 一区二区电影在线观看| 青青草99啪国产免费| 精品免费久久久| 亚洲国产精华液网站w| 国产精品久久久久久久久电影网| 香蕉成人影院| 欧美精品一区二区三区高清aⅴ | 波多野结衣久草一区| 国产乱视频在线观看| 亚洲一二三区在线观看| 中文字幕第88页| 欧美自拍视频| 久久99久国产精品黄毛片入口| 亚洲中文一区二区| 成人av免费在线| 黄色一级视频播放| 精品成人av| 日韩精品在线私人| 国产精品自拍视频一区| 黄页网站大全一区二区| 欧美亚洲丝袜| 美女扒开腿让男人桶爽久久软| 欧美一级二级三级乱码| 极品美妇后花庭翘臀娇吟小说| 鲁大师影院一区二区三区| 国产一区精品视频| 中文在线字幕免费观看| 69堂精品视频| 国精品人伦一区二区三区蜜桃| 久久福利影视| 精品乱子伦一区二区三区| 日本动漫同人动漫在线观看| 8x8x8国产精品| 黑人狂躁日本娇小| 蜜臂av日日欢夜夜爽一区| 秋霞久久久久久一区二区| 在线手机中文字幕| 日韩av有码在线| 日韩成人在线免费视频| 国产91精品免费| 777久久精品一区二区三区无码 | 麻豆疯狂做受xxxx高潮视频| 久久电影网电视剧免费观看| 视频一区亚洲| 日本欧美不卡| 一区二区三区视频在线| 中文字幕免费观看| 久久精品欧美一区二区三区麻豆| 日本久久久精品视频| 亚洲免费福利一区| 欧美在线视频免费| 国产污视频在线| 在线观看av一区| 毛片视频免费播放| 久久99精品久久久久婷婷| 黄色一级片网址| 日韩一区二区三区精品| 欧美劲爆第一页| 五月天福利视频| 欧美日韩一二三四五区| 亚洲精品国产熟女久久久| 日韩成人精品视频| 一区二区高清视频| 精品一区二区三区四区五区| 欧美多人爱爱视频网站| 日韩中文字幕影院| 欧美性xxxxxxx| 精品人妻中文无码av在线| 精品亚洲国内自在自线福利| 7777在线视频| 欧美交a欧美精品喷水| 日韩免费不卡av| 国产在线观看av| 亚洲第一视频网站| 无码aⅴ精品一区二区三区| 国产精品伦理一区二区| 91精品又粗又猛又爽| 久久精品30| 亚洲精品一区二区三区蜜桃久| 高清久久精品| 97成人精品视频在线观看| www.久久热.com| 日韩欧美激情四射| 精品一区二区无码| 亚洲激情在线播放| 中日韩精品一区二区三区| 激情偷乱视频一区二区三区| 欧美精品99久久| 99久久精品网站| 久中文字幕一区| 国产免费av国片精品草莓男男| 亚洲**2019国产| 午夜视频在线| 日韩精品在线观看一区二区| 91一区二区视频| 日韩欧美在线国产| 久久国产免费观看| 中文字幕av在线一区二区三区| xxxxwww一片| 奇米四色…亚洲| 免费av手机在线观看| 欧美独立站高清久久| 久久精品magnetxturnbtih| 国产精品中文| 国产精品免费一区| 亚洲色图官网| 欧美精品成人在线| 成人ww免费完整版在线观看| 亚洲精品在线视频| 精品免费久久久| 欧美人妇做爰xxxⅹ性高电影 | 一区二区伦理片| 成人av在线影院| 日韩精品xxx| 另类小说一区二区三区| 欧美视频第一区| 在线观看日韩av电影| japanese在线视频| 波多野结衣在线观看一区二区三区| 岛国视频一区| 日韩高清一区| 成人亚洲激情网| 日韩av懂色| 国产精品久久久久久久久久久新郎 | 少妇性l交大片| 国产精品免费看| 亚洲色成人www永久在线观看| 忘忧草精品久久久久久久高清| 欧美日韩亚洲免费| 亚洲动漫在线观看| 开心色怡人综合网站| 加勒比色老久久爱综合网| 国产精品免费在线播放| 亚洲欧洲国产精品一区| 亚洲在线第一页| 99精品在线免费观看| 国产精品亚洲第一区| 国产成人午夜性a一级毛片| 国产成人一区二区三区电影| 粉嫩一区二区三区| 国产成人a亚洲精品| 中文在线中文资源| 国产成人av网址| h1515四虎成人| 国产欧美在线播放| 日韩三级成人| 91在线观看免费网站| 国产精品成人**免费视频| 91精品免费视频| 视频一区中文字幕精品| 亚洲最大福利网站| 日韩精品中文字幕一区二区| 成人三级视频在线观看一区二区| 亚洲精品黑牛一区二区三区| 国产精品xxx在线观看www| 成人激情自拍| 久久婷婷开心| 国产欧美一区| 亚洲巨乳在线观看| 亚洲大全视频| 亚洲 欧美 综合 另类 中字| 在线不卡视频| 亚洲成人福利在线观看| 美日韩一级片在线观看| 天美一区二区三区| 成人性色生活片| 日本激情小视频| 国产精品久久久久9999吃药| 日本青青草视频| 精品久久久国产| 国产精品sm调教免费专区| 宅男噜噜噜66一区二区66| 狠狠躁日日躁夜夜躁av| 亚洲人成电影网站色…| 欧美18一19xxx性| 久久久久久久久久久亚洲| 涩涩在线视频| 成人性生交大片免费看小说 | 国产一区二区按摩在线观看| av漫画在线观看| 久久精品一二三| 国产探花在线播放| 日韩欧美在线免费观看| 国产精品乱码一区二区| 亚洲精品久久在线| yw在线观看| 欧美精品第一页在线播放| 美女网站视频一区| 999国产在线| 久久99国内| 成人免费视频91| 欧美aⅴ一区二区三区视频| 天天躁日日躁狠狠躁av| 国产精品网站导航| 91精品国产乱码在线观看| 欧美欧美午夜aⅴ在线观看| 无码精品人妻一区二区| 久久成人亚洲精品| 桃色av一区二区| 成人午夜在线视频一区| 国产精品一国产精品| 成人在线免费观看视频网站| 日本女人一区二区三区| 成人午夜精品无码区| 亚洲柠檬福利资源导航| 欧美在线视频精品| 日韩久久免费电影| av黄色在线| 国产日韩欧美电影在线观看| 久久av免费| 日韩伦理在线免费观看| 国产精品一二三四五| 正在播放国产对白害羞| 高跟丝袜欧美一区| 亚洲欧美国产高清va在线播放| 色狠狠av一区二区三区香蕉蜜桃| 不卡一二三区| 好吊色欧美一区二区三区| 欧美在线国产| 樱花草www在线| 中文字幕欧美国产| 在线免费黄色av| 亚洲精品国产精品国产自| 亚洲91av| 亚洲自拍偷拍第一页| 日韩精品看片| 亚洲36d大奶网| 亚洲国产精品99久久久久久久久| 日本视频免费观看| 亚洲欧洲偷拍精品| 在线一区av| 欧美极品色图| 久久天堂成人| 无码少妇精品一区二区免费动态| 粉嫩av一区二区三区免费野| 色屁屁草草影院ccyycom| 国内免费精品永久在线视频| 91蝌蚪精品视频| 拔插拔插海外华人免费| 东方aⅴ免费观看久久av| 激情综合网五月婷婷| 精品国产三级a在线观看| 黑人玩欧美人三根一起进| 99久久久久国产精品免费| 欧美一区高清| wwwxxx色| 亚洲成a人在线观看| 亚洲精品久久久久avwww潮水| 欧美国产日本高清在线| 成人另类视频| 北条麻妃在线视频观看| 久久人人97超碰com| 天堂av免费在线观看| 色噜噜国产精品视频一区二区| 国产高清视频一区二区| 无码人妻精品一区二区蜜桃百度| 高清成人免费视频| 日本一级黄色大片| 亚洲日韩欧美视频一区| 成人h在线观看| 欧美一级中文字幕| 成人爱爱电影网址| 丰满少妇xoxoxo视频| 中文字幕国产精品久久| 综合久久av| 国产96在线 | 亚洲| 国产欧美日韩亚州综合| 国产一区二区女内射| 欧美黑人巨大精品一区二区| 日本亚洲不卡| 天天影视色综合| 亚洲一区二区三区不卡国产欧美 | 久久精品最新地址| 97久久亚洲| 国产福利影院在线观看| 亚洲美女视频在线观看| 头脑特工队2在线播放| 国产精品自产拍高潮在线观看| 欧美在线高清| 小早川怜子久久精品中文字幕| 91麻豆精品国产91久久久| а√在线中文网新版地址在线| 欧洲久久久久久| 国产精品综合网| 精品国产乱子伦| 欧美精品videos性欧美| 精品毛片免费观看| 成人免费看片载| 在线观看欧美精品| 国产精品186在线观看在线播放| 日韩一区国产在线观看| 国产不卡在线一区| 在线视频精品免费| 久久人人看视频| 久久精品国产大片免费观看| 亚洲欧洲国产视频| 欧美日韩久久久一区| 九九色在线视频| 手机福利在线视频| 久久久久久久综合狠狠综合| 国产 欧美 自拍|