五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

nginx做負(fù)載CDN加速獲取端真實(shí)ip

發(fā)布日期:2022-04-11 15:02 | 文章來源:gibhub
nginx做負(fù)載CDN加速獲取端真實(shí)ip
在不用cdn的情況下,nginx做負(fù)載獲取真實(shí)ip時,nginx配置如下:
Java代碼
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
然后后端服務(wù)器獲取ip代碼:
Java代碼

復(fù)制代碼
代碼如下:

String address = request.getHeader("X-Forwarded-For");
if (address != null && address.length() > 0
&& !"unknown".equalsIgnoreCase(address)) {
return address;
}
address = request.getHeader("Proxy-Client-IP");
if (address != null && address.length() > 0
&& !"unknown".equalsIgnoreCase(address)) {
return address;
}
address = request.getHeader("WL-Proxy-Client-IP");
if (address != null && address.length() > 0
&& !"unknown".equalsIgnoreCase(address)) {
return address;
}
return request.getRemoteAddr();

這樣就能獲取到真實(shí)的IP,服務(wù)器測試一下:
不加cdn,獲取得IP:123.116.126.51(我當(dāng)前客戶端機(jī)器的真實(shí)IP)
然后加上加了cdn后,后去到的IP:123.116.126.51, 202.108.251.166(hosts指向cdn的ip)
即:client 真實(shí)IP,代理IP,google之,
X-Forwarded-For:簡稱XFF頭,它代表客戶端,也就是HTTP的請求端真實(shí)的IP,只有在通過了HTTP 代理或者負(fù)載均衡服務(wù)器時才會添加該項(xiàng) 。
標(biāo)準(zhǔn)格式如下:
X-Forwarded-For: client1, proxy1, proxy2
從標(biāo)準(zhǔn)格式可以看出,X-Forwarded-For頭信息可以有多個,中間用逗號分隔,第一項(xiàng)為真實(shí)的客戶端ip,剩下的就是曾經(jīng)經(jīng)過的代理或負(fù)載均衡的ip地址,經(jīng)過幾個就會出現(xiàn)幾個。
當(dāng)Nginx設(shè)置X-Forwarded-For等于$proxy_add_x_forwarded_for后會有兩種情況發(fā)生
1、如果從CDN過來的請求沒有設(shè)置X-Forwarded-For頭(通常這種事情不會發(fā)生),而到了我們這里Nginx設(shè)置將其設(shè)置為$proxy_add_x_forwarded_for的話,X-Forwarded-For的信息應(yīng)該為CDN的IP,因?yàn)橄鄬τ贜ginx負(fù)載均衡來說客戶端即為CDN,這樣的話,后端的web程序時死活也獲得不了真實(shí)用戶的IP的。
2、CDN設(shè)置了X-Forwarded-For,我們這里又設(shè)置了一次,且值為$proxy_add_x_forwarded_for的話,那么X-Forwarded-For的內(nèi)容變成 ”客戶端IP,CDN的ip“如果是這種情況的話,那后端的程序通過X-Forwarded-For獲得客戶端IP,則取逗號分隔的第一項(xiàng)即可。
這個比較頭疼,如果只想獲取客戶端真實(shí)ip,那么只能修改我們后端代碼,如果有多個,那么取第一個。這不是我想要的,
那么怎么樣才能不修改就能真實(shí)IP呢?
Nginx中還有一個$http_x_forwarded_for變量,這個變量中保存的內(nèi)容就是請求中的X-Forwarded-For信息。如果后端獲得X-Forwarded-For信息的程序兼容性不好的話(沒有考慮到X-Forwarded-For含有多個IP的情況),最好就不要將X-Forwarded-For設(shè)置為 $proxy_add_x_forwarded_for。應(yīng)該設(shè)置為$http_x_forwarded_for或者干脆不設(shè)置!
上面這段話的意思是我們不加 $proxy_add_x_forwarded_for, 但是這樣不在cdn的情況下去會取不到真實(shí)IP,有沒有一個兩全齊美的方法呢?
經(jīng)過幾種配置之后,發(fā)現(xiàn)做如下配置:
Java代碼
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
這樣配置第一次獲取 $http_x_forwarded_for,如果不存在,那么獲取$proxy_add_x_forwarded_for。
這樣不管是否在cdn環(huán)境,都可以獲得一個客戶端IP。
(注:多層代理未測試)

美國服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部