我是靠谱客的博主 健康学姐,最近开发中收集的这篇文章主要介绍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配置文件中:

  1. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  

  2.        prefix="localhost_access_log." suffix=".txt"  

  3.        pattern="%{X-Real-IP}i %l %u %t %D "%r" %s %b" />


转载于:https://blog.51cto.com/wushank/1678370

最后

以上就是健康学姐为你收集整理的nginx转发及后端服务器获取真实client的IP的全部内容,希望文章能够帮你解决nginx转发及后端服务器获取真实client的IP所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部