nginx转发及后端服务器获取真实client的IP
针对nginx的模块介绍可以查阅wiki:http://wiki.nginx.org/Modules
常用模块:HTTP Core
Proxy
Rewrite
Upstream
原理:
squid,varnish以及nginx等,在做反向代理的时候,因为要代替客户端去访问服务器,所以,当请求包经过反向代理后,在代理服务器这里这个IP数据包的IP包头做了修改,最终后端web服务器得到的数据包的头部的源IP地址是代理服务器的IP地址,这样一来,后端服务器的程序给予IP的统计功能就没有任何意义,所以在做代理或集群的时候必须解决这个问题,这里,我以nginx做集群或代理的时候如何给后端web服务器保留(确切的说是传递)客户端的真实IP地址。
首先,在前端nginx上需要做如下配置:
location / {
proxy_pass http://192.168.100.100;
proxy_set_header host $host;
proxy_set_header X-Real-IP $remote_addr;
};
在后端192.168.100.100的apache服务器上配置文件进行如下修改。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
改为
LogFormat "%{X-Real-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
即可。
tomcat中的Java代码修改如下
out.println(“X-Real-IP : ” + request.getHeader(“X-Real-IP”) + “<br>”);
其中X-Real-IP即用户真实IP
tomcat server.xml配置文件中:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%{X-Real-IP}i %l %u %t %D "%r" %s %b" />
转载于:https://blog.51cto.com/wushank/1678370
nginx转发及后端服务器获取真实client的IP相关推荐
- java获取f5服务器真实ip_F5中源地址转换(AutoMap)模式下后端服务器获取客户端真正的IP地址...
F5中开启AutoMap,并传递X-Forwarded-For值 开启F5源地址转换"Auto Map" 方式一: 在http profile中开启X-Forwarded-For ...
- 配置Nginx前端Apache后端服务器LNMPA-与LNMP,HHVM性能比拼
文章目录 LNMPA一键安装 LNMPA性能比较 HHVM性能比拼 Nginx前端小结 文章目录 LNMPA一键安装 LNMPA性能比较 HHVM性能比拼 Nginx前端小结 Apache和Nginx ...
- 服务器获取真实客户端 IP
0x01 先查个问题 测试环境微信支付通道提示网络环境未能通过安全验证,请稍后再试,出现这种情况一般首要 想到可能是双方网络交互中微信方验参与我们出现不一致,翻了下手册确定是这类问题开始排查环节 可能 ...
- Nginx之配置后端服务器组
Nginx服务器支持设置一组服务器作为后端服务器,Nginx反向代理,负载均衡等重要功能会经常涉及后端服务器. 服务器组的设置包括以下的一些指令,他们是由标准的HTTP模块ngx_http_upstr ...
- Nginx在多层代理下获取真实客户端IP地址
最近在研究nginx中如何获取真实客户端IP的方法.众所周知,在编译Nginx时,可通过添加http_realip_module模块来获取真实客户端IP地址.何为真实IP地址呢?请看下图,既获取到的真 ...
- 学习笔记 - Nginx在多层代理下获取真实客户端IP地址
最近在研究nginx中如何获取真实客户端IP的方法.众所周知,在编译Nginx时,可通过添加http_realip_module模块来获取真实客户端IP地址.何为真实IP地址呢?请看下图,既获取到的真 ...
- nginx设置代理后端服务器增加前缀
需求背景 有时候我们需要这样一个操作,线上是请求/aaa/bbb/ccc 但是我们线下测试的时候为了不影响已有服务,增加了一个path为 /ddd/aaa/bbb/ccc这样的 也就是我们后端代理的时 ...
- nginx 之postread 阶段:获取真实客户端地址的realip 模块
如果拿到真实的用户IP地址,需要有如下前提 1.TCP 连接四元组 (src_ip,src_port,dst_ip, dst_port) 2.HTTP头部X-Forwarded-For 用户传递IP ...
- nginx转发ArcServer地图服务器出现的http://localhost:6080/arcgis/rest/info?f=json跨域问题
QQ交流群:607330463 GIS开发技术最强交流群 未经允许 禁止转载 可以参考 Access to XMLHttpRequest at 'http://localhost:6080/ar ...
最新文章
- Windows Azure Platform Introduction (6) Windows Azure应用程序运行环境
- php 变更 obj,php怎么将object转为string
- 推荐算法-聚类-DBSCAN
- 使用 requests 配置代理服务
- 合并Spark社区代码的正确姿势
- 1044 火星数字 PAT乙级 (C++)
- Android_Event Bus 的基本用法
- 华强北三代悦虎1562A怎么样?
- 豆瓣 为什么不用php,豆瓣网友是不是都疯了?
- 项目总结25:海康威视SDK-Java二次开发-客流量分析
- unity, 判断可见性
- 读书笔记—《雷达信号处理基础》第一章 雷达系统与信号处理概述(2)
- Unity3D 一些工具总结
- JUCE框架教程(4)—— Slider Class入门
- 网站服务器的宽带是1mb是什么意思,1mb/s网速是什么意思
- 别再自己抠图了,Python教你一招弄完
- 多益网络社招iq_18年多益秋招iq测试题
- 不会真有人Macbook录屏没声音吧?别用SoundFlower了!
- git恢复某个文件到上一个提交版本
- 视频配音变声用什么软件?这些软件能帮助你