成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

nginx通過X-Forwarded-For獲取真實(shí)ip基于真實(shí)ip做hash

IT那活兒 / 2785人閱讀
nginx通過X-Forwarded-For獲取真實(shí)ip基于真實(shí)ip做hash

點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!

 

01

場(chǎng)景
因?yàn)橐淮螛I(yè)務(wù)會(huì)多次訪問,但是訪問中會(huì)產(chǎn)生一些文件和圖片,所以后端真實(shí)服務(wù)需要做會(huì)話保持或者做文件共享服務(wù)。

02

解決方案
  • 文件共享服務(wù)可以使用nfs文件共享,也可以使用文件系統(tǒng)(如:fastdfs)做共享文件。
  • 可以通過redis做session共享。
  • 可以直接通過改動(dòng)nginx做基于ip的會(huì)話保持,這種改動(dòng)目前對(duì)于生產(chǎn)系統(tǒng)是改動(dòng)最小,影響最小的。

 

03

Nginx解決方案
nginx常用的就是基于ip做hash,但是nginx前面如果還有代理或者套了一層CDN,直接ip_hash是無法均衡分配的,因?yàn)閚ginx會(huì)把前一層套的代理地址或CDN地址做hash算法分配給后端服務(wù)地址。

3.1 在 Nginx 的 http 模塊內(nèi)加入如下配置:

map $http_x_forwarded_for $clientRealIp {
"" $remote_addr;
~^(?P[0-9.]+),?.*$ $firstAddr;
}
注:而且代碼中還配合使用了$remote_addr,因此$clientRealIP 還能兼容客戶端直接訪問nginx代理的情況,不像$http_x_forwarded_for在直接訪問模式中將會(huì)是空值!
3.2 在nginx的upstream模塊內(nèi)加入如下配置:
upstream web {
hash $clientRealIp;
server 192.168.1.100:8080;
server 192.168.1.101:8080;
}

 

04

測(cè)試案列
第一層代理:?jiǎn)闻_(tái)nginx:36
  • nginx配置如下圖所示:
第二層代理:兩臺(tái)nginx:37/38
  • 37/38nginx配置如下圖所示:
第三層web服務(wù):三臺(tái)web服務(wù):39/40/41
4.1 測(cè)試
  • 通過瀏覽器訪問第一臺(tái)nginx地址加端口,如:http://ip36:8088
  • 通過其它服務(wù)器直接curl訪問,如:curl http://ip36:8088
4.2 驗(yàn)證
第二層代理37/38nginx,統(tǒng)計(jì)兩臺(tái)nginx訪問日志,把客戶端地址和第三層web服務(wù)地址統(tǒng)計(jì)輸出,發(fā)現(xiàn)同一個(gè)客戶端只會(huì)出現(xiàn)在37/38其中一臺(tái)nginx訪問日志中,且也只會(huì)分發(fā)到后端web服務(wù)一臺(tái)服務(wù)器,驗(yàn)證成功。
  • 37nginx訪問日志如圖所示:
  • 38nginx訪問日志如圖所示:



END



本文作者:徐 苗

本文來源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/129461.html

相關(guān)文章

  • 利用X-Forwarded-For偽造客戶端IP漏洞成因及防范

    摘要:在有反向代理的情況下,直接使用獲取到的地址是所在服務(wù)器的地址,而不是客戶端的。如何防范方法一在直接對(duì)外的反向代理服務(wù)器上配置如果有多層代理,內(nèi)層的配置在最外層即直接對(duì)外提供服務(wù)的使用代替上面的,可以防止偽造。 問題背景 在Web應(yīng)用開發(fā)中,經(jīng)常會(huì)需要獲取客戶端IP地址。一個(gè)典型的例子就是投票系統(tǒng),為了防止刷票,需要限制每個(gè)IP地址只能投票一次。 如何獲取客戶端IP 在Java中,獲取客...

    Yuqi 評(píng)論0 收藏0
  • docker進(jìn)階,nginx部署的幾個(gè)重要點(diǎn)詳解以及開發(fā)流程---持續(xù)更新

    摘要:無論這個(gè)連接是外部主動(dòng)建立的,還是內(nèi)部建立的。協(xié)議有表示層數(shù)據(jù)的表示安全壓縮。在整個(gè)發(fā)展過程中的所有思想和著重點(diǎn)都以一種稱為的文檔格式存在。 部署基礎(chǔ)知識(shí)url:協(xié)議://網(wǎng)站地址:端口(/)路徑地址?參數(shù)eg: http://www.baidu.com:80/abc/dd/ www.baidu.com找服務(wù)器 80端口:找服務(wù)器上提供服務(wù)的應(yīng)用 nginx uri:/ab...

    KunMinX 評(píng)論0 收藏0
  • docker進(jìn)階,nginx部署的幾個(gè)重要點(diǎn)詳解以及開發(fā)流程---持續(xù)更新

    摘要:無論這個(gè)連接是外部主動(dòng)建立的,還是內(nèi)部建立的。協(xié)議有表示層數(shù)據(jù)的表示安全壓縮。在整個(gè)發(fā)展過程中的所有思想和著重點(diǎn)都以一種稱為的文檔格式存在。 部署基礎(chǔ)知識(shí)url:協(xié)議://網(wǎng)站地址:端口(/)路徑地址?參數(shù)eg: http://www.baidu.com:80/abc/dd/ www.baidu.com找服務(wù)器 80端口:找服務(wù)器上提供服務(wù)的應(yīng)用 nginx uri:/ab...

    ytwman 評(píng)論0 收藏0
  • nginx配置解析之客戶端真實(shí)IP的傳遞

    摘要:前后端分離之后,采用作為靜態(tài)服務(wù)器,并通過反向代理的方式實(shí)現(xiàn)接口跨域的方式,在降低開發(fā)成本的同時(shí)也帶來了諸多問題,例如客戶端真實(shí)的獲取。 前后端分離之后,采用nginx作為靜態(tài)服務(wù)器,并通過反向代理的方式實(shí)現(xiàn)接口跨域的方式,在降低開發(fā)成本的同時(shí)也帶來了諸多問題,例如客戶端真實(shí)IP的獲取。 在一些特殊場(chǎng)景下,比如風(fēng)控和支付流程,往往需要獲取用戶的ip信息,但是nginx反向代理在實(shí)現(xiàn)跨域...

    Lsnsh 評(píng)論0 收藏0
  • 干貨:Java正確獲取客戶端真實(shí)IP方法整理

    摘要:但是在通過了,等反向代理軟件就不能獲取到客戶端的真實(shí)地址了。下面是一個(gè)參考獲取客戶端地址的方法如果使用的是連接池,可以參考使用方法,但這個(gè)是經(jīng)過多級(jí)代理的地址,需要自己處理下獲取第一個(gè)。 showImg(https://segmentfault.com/img/remote/1460000015379119); 在JSP里,獲取客戶端的IP地址的方法是:request.getRemot...

    felix0913 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<