模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP

192.168.109.137 :nginx01(充当第一层代理==F5)
192.168.109.138 :nginx02(二层代理,业务转发)
192.168.109.139 :tomcat (后端业务层)

192.168.109.1 :客户端IP

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一。安装好访问如图:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二。配置代理查看效果,以及日志

1。 192.168.109.137 将所有请求代理到二级代理192.168.109.138去(proxy_pass http://192.168.109.138;)效果如下:

192.168.109.137:tail -f access.log

192.168.109.138:tail -f access.log

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

三。设置日志打印格式,以及ip

1.一级代理192.168.109.137 nginx(F5)设置:

以下分别解释并测试效果:

1.proxy_set_header Host $host; 或者 proxy_set_header Host $host:$proxy_port; ($host代表转发服务器,$proxy_port代表137转发服务器请求后端服务器的端口,也就是80)

$host :$proxy_port指的的就是转发服务器【192.168.109.137 nginx(F5)】的servername 和监听端口,我这里配置的是listen       80;server_name  192.168.109.137;

在192.168.109.138的nginx日志打印中加入$http_host '                log_format  main  '....$http_host '

测试:

2.proxy_set_header X-Real-IP $remote_addr;
将$remote_addr的值放进变量X-Real-IP中,此变量名可变,$remote_addr的值为客户端的ip

一级代理nginx(F5)的日志配置:

log_format main '$remote_addr - $remote_user [$time_local] "$request" $http_host '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

二级代理nginx02的日志配置如下:(两者区别在于"$http_x_real_ip",添加了这个变量的值

log_format main '$remote_addr "$http_x_real_ip" - $remote_user [$time_local] "$request" "$http_host" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

继续测试:

3.proxy_set_header X-Forwarded-For $remote_addr; 与 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

两者的区别:

在只有一个代理服务器的转发的情况下,两者的效果貌似差不多,都可以真实的显示出客户端原始ip

但是区别在于:

$proxy_add_x_forwarded_for变量包含客户端请求头中的"X-Forwarded-For",与$remote_addr两部分,他们之间用逗号分开。

继续测试:

一级代理nginx(F5)日志配置:

log_format main '$remote_addr - $remote_user [$time_local] "$request" $http_host '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

二级代理nginx02日志配置:

log_format main '$remote_addr "$http_x_real_ip" - $remote_user [$time_local] "$request" "$http_host" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.二级代理192.168.109.137 nginx02设置:

set_real_ip_from 是指接受从哪个信任前代理处获得真实用户ip

real_ip_header 是指从接收到报文的哪个http首部去获取前代理传送的用户ip

real_ip_recursive on;      #递归的去除所配置中的可信IP。排除set_real_ip_from里面出现的IP。如果出现了未出现这些IP段的IP,那么这个IP将被认为是用户的IP

注意:后端tomcat 一般是通过X-FORWARDED-FOR拿取客户端真实IP

tomcat日志打印配置:

vim server.xml

pattern="%{X-FORWARDED-FOR}i %h %l %u %t "%r" %s %b" />

pattern参数详解参考:http://sofar.blog.51cto.com/353572/1712069/

获取用户真实IP:(模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP)的更多相关文章

  1. Nginx反向代理+Tomcat+Springmvc获取用户访问ip

    Nginx+Tomcat+Springmvc获取用户访问ip 1.Nginx反向代理 修改Nginx配置文件 location / { ***********之前代码*******; proxy_se ...

  2. HappyAA服务器部署笔记1(nginx+tomcat的安装与配置)

    这是本人的服务器部署笔记.文章名称叫"部署笔记1"的原因是之后我对这个进行了改进之后,会有"部署笔记2","部署笔记3"...循序渐进,估计 ...

  3. Nginx+Tomcat实现动静分离和负载均衡

    一.什么是动静分离? Nginx动静分离简单来说就是把动态和静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是将动态请求和静态请求分开,可以理解成使用Nginx处理静态 ...

  4. centos6 Nginx+Tomcat负载均衡配置

    一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...

  5. F5后端nginx+tomcat应用如何获得用户的真实ip【转】

    根据业务需要要求记录每个通过wap或者客户端访问我们服务器的用户真实ip但是由于业务前端部署了两个3900系列的F5设备导致程序一直获得F5设备自身的ip,所以笔者考虑可能是因为F5导致无法获得用户的 ...

  6. 深入nginx之《获取用户的真实IP》

    获取用户的真实IP Nginx会将客户端的IP信息存放在$remote_addr变量里,但这并不意味着它就是客户端的IP,生产环境往往会充满各种代理,让IP的来龙去脉变得扑朔迷离. 目前互联网公司基本 ...

  7. nginx反向代理获取用户真实ip

    nginx做反向代理时,默认的配置后端获取到的ip都是来自于nginx,如何转发用户的真实ip到后端程序呢?如是是java后端,用request.getRemoteAddr();获取到的是nginx的 ...

  8. nginx+tomcat集群配置(3)---获取真实客户端IP

    前言: 在初步构建的nginx+tomcat服务集群时, 发现webserver获取到的客户端ip都是同一个, 皆为作为反向代理服务的nginx所在的机器IP. 这不太符合我们的基本需求, 为将来的数 ...

  9. X-Forwarded-For 负载均衡 7 层 HTTP 模式获取来访客户端真实 IP 的方法(IIS/Apache/Nginx/Tomcat)

    https://help.aliyun.com/knowledge_detail/13051859.html?pos=1 1.IIS 6 配置方案2.IIS 7 配置方案3.Apache 配置方案4. ...

随机推荐

  1. @ResponseBody返回4种数据格式的数据

    1.返回一个键值对或者集合 前端JS请求: //返回值为map的形式 $(".name").blur(function(){ $.ajax({ type:"Post&qu ...

  2. TimeUtils

    public class TimeUtils { public static final int YEAR = 0; public static final int MONTH = 1; public ...

  3. 国内npm镜像使用方法

    npm全称Node Package Manager,是node.js的模块依赖管理工具.由于npm的源在国外,所以国内用户使用起来各种不方便.下面整理出了一部分国内优秀的npm镜像资源,国内用户可以选 ...

  4. php versionscan YAF

    https://github.com/psecio/versionscan   Yaf 的特点: 用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销. 所有的框架类, 不需要编 ...

  5. 麦子lavarel---10、一些第三方应用注意

    麦子lavarel---10.一些第三方应用注意 一.总结 一句话总结: 其实把重要的几个功能弄一个就好了,邮箱验证,手机号验证,支付验证,都是调用第三方接口,也很简单 1.关于页面和服务端校验的看法 ...

  6. PhantomJs 与 Casperjs

    利用PhantomJS做网页截图经济适用,但其API较少,做其他功能就比较吃力了. CasperJs是对phantomjs的一次封装.即phantomjs是原生的,而casperjs是封装在以phan ...

  7. 三十三、python中configparser配置文件相关操作

    配置文件ini [a1]age = 18sex = 'man' [a2]age = 19sex = 'woman'name = False 1.对配置文件进行操作 import configparse ...

  8. Linux_SquidProxyServer代理服务器

    目录 目录 Squid proxy server Web proxy server operating principle Squid features Setup squid server Setu ...

  9. UI自动化之特殊处理一(iframe\句柄\鼠标键盘)

    iframe\句柄\鼠标键盘是一些比较特殊的事件,需要特殊处理 目录 1.iframe 2.句柄(handle) 3.鼠标键盘 1.iframe iframe 是内嵌的网页元素,也可以说是内嵌的框架, ...

  10. KETTLE——(二)数据抽取

    过了个春节,好长时间没有更新了,今天接着写第二部分——数据抽取. 进入界面以后会发现左侧菜单有两个东西:转换和作业:简单说一下,转换是单次的转换,不可重复,但可重复利用:作业是汇聚了其他操作和多次(可 ...