使用slb后nginx、apache获取真实ip

   前提是在slb设置中开启了“获取真实ip”的功能。

  如果只是需要在程序中获取真实ip 那么只要在程序中获取 HTTP_X_FORWARDED_FOR 的值基本就可以了,不需要下面的操作。

  下面的操作可以实现nginx或者apache日志中记录用户真实ip或者在apache、nginx中禁止某些ip 用户访问等。

  nginx

  nginx作为slb获取真实ip是使用 http_realip_module,默认一键安装包安装的nginx没有安装这个模块需要重新重新编译nginx并加装。

  以一键安装包为例

  重新编译nginx增加 --with-http_realip_module

  wget http://soft.phpwind.me/top/nginx-1.0.12.tar.gz

  tar zxvf nginx-1.0.12.tar.gz

  cd nginx-1.0.12

  ./configure --user=www --group=www --prefix=/alidata/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_realip_module

  make

  make install

  kill -USR2 `cat /alidata/server/nginx/logs/nginx.pid`

  kill -QUIT `cat /alidata/server/nginx/logs/ nginx.pid.oldbin`

  修改nginx.conf

  vi /alidata/server/nginx/conf/nginx.conf

  在

  fastcgi_connect_timeout 300;

  fastcgi_send_timeout 300;

  fastcgi_read_timeout 300;

  fastcgi_buffer_size 64k;

  fastcgi_buffers 4 64k;

  fastcgi_busy_buffers_size 128k;

  fastcgi_temp_file_write_size 128k;

  下面增加

  set_real_ip_from ip地址;(这个ip地址首先不是slb提供的公网ip,具体ip多少可以看一下之前nginx日志,如果有多个都要写上。)

  set_real_ip_from ip地址;(这个ip地址首先不是slb提供的公网ip,具体ip多少可以看一下之前nginx日志,如果有多个都要写上。)

  real_ip_header X-Forwarded-For;

  重启nginx

  /alidata/server/nginx/sbin/nginx -s reload

  apache

  安装apache的一个第三方模块"mod_rpaf", 官方网站: http://stderr.net/apache/rpaf/

  wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz

  tar zxvf mod_rpaf-0.6.tar.gz

  cd mod_rpaf-0.6

  /alidata/server/httpd/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

  修改apache配置 /alidata/server/httpd/conf/httpd.conf

  在最末尾添加

  LoadModule rpaf_module modules/mod_rpaf-2.0.so

  RPAFenable On

  RPAFsethostname On

  RPAFproxy_ips ip地址

  RPAFheader X-Forwarded-For

  //RPAFproxy_ips ip地址(这个ip地址首先不是slb提供的公网ip,具体ip多少可以看一下apache日志,通常会有2个 都要写上)

  添加完成后重启apache

  /alidata/server/httpd/bin/apachectl restart

  具体案例

  LoadModule rpaf_module modules/mod_rpaf-2.0.so

  RPAFenable On

  RPAFsethostname On

  RPAFproxy_ips 10.242.230.65 10.242.230.131

  RPAFheader X-Forwarded-For

时间: 2024-09-21 10:09:35

使用slb后nginx、apache获取真实ip的相关文章

apache-Nginx作为前端反代理到后端Apache和Tomcat,无法获取真实IP

问题描述 Nginx作为前端反代理到后端Apache和Tomcat,无法获取真实IP 已经添加 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 但是后段还是获取不到真实IP

[原创]分析解决lvs fullnat模式下后端服务器获取真实IP地址异常问题

摘要 分析解决lvs fullnat模式下少量的请求记录client IP不是用户真实的IP地址问题. 原创文章:来自分析lvs fullnat模式下后端服务器获取真实IP地址异常问题 问题背景 lvs fullnat模式下观察后端服务器realserver http/https业务运行系统日志,有时候可以发现有少量的请求记录的client IP不是用户真实的IP地址(存在但出现的概率很小,增加了问题排查的难度),而是属于lvs主机私有的IP地址.关于fullnat的简介可以参考http://w

asp.net(vb.net)获取真实IP的函数

aspx vb.net获取真实IP的函数如下: 复制代码 代码如下: <script runat="server"> Public Function CheckIp(ByVal ip As String) As Boolean Dim pat As String = "^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$" Dim reg As Regex = New Regex(pat) if ip = "

使用阿里云来做服务端,udp传输协议,如何获取真实ip地址?

问题描述 使用阿里云来做服务端,udp传输协议,如何获取真实ip地址? 使用阿里云来做服务端,udp传输协议,如何获取真实ip地址? 解决方案 谁获得谁的真实ip.你怎么定义"真实ip"? 首先,你的服务器天然可以获得客户端公网的ip,你的客户端天然可以获得服务器的ip 至于你要获得客户端的私有ip,你可以在客户端获得了,作为你udp数据包的一部分发给服务端.

asp.net(vb.net)获取真实IP的函数_实用技巧

aspx vb.net获取真实IP的函数如下: 复制代码 代码如下: <script runat="server"> Public Function CheckIp(ByVal ip As String) As Boolean Dim pat As String = "^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$" Dim reg As Regex = New Regex(pat) if ip = "

JS绕过代理、VPN获取真实IP及内网IP,逆向追踪的实现方法_javascript技巧

Firefox 跟 Chrome支持WebRTC可以向STUN服务器请求,返回内外网IP,不同于XMLHttpRequest请求,STUN请求开发者工具当中看不到网络请求的. //get the IP addresses associated with an account function getIPs(callback) { var ip_dups = {}; //compatibility for firefox and chrome var RTCPeerConnection = win

asp.net获取真实ip的方法_实用技巧

本文实例讲述了asp.net获取真实ip的方法.分享给大家供大家参考.具体如下: public string getip() { string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (null == result || result == String.Empty) { result = HttpContext.Current.Request.ServerVari

Nginx获取真实IP地址方法

问题现象 网站业务架构为: 高防->WAF->slb 7层->ECS Nginx在ECS上获取真实的客户端IP地址,配置不生效. 测试环境 高防IP为:118.xxx.xxx.204 WAF的Cname为:9qlliqgcxxxxxu0z.aliyunwaf.com 120.xxx.xxx.174  测试的域名为:there.pier39.cn 负载均衡的IP为: 119.xxx.xxx.162 ECS的IP为:120.xxx.xxx.201 [root@xx nginx]# uname

PHPwind 9升级后 nginx apache iis 伪静态配置

  PHPwind 9 正式版是一个非常不错的论坛系统,这里就不多宣传了.主要问题是很多之前的用户升级来发现变化很多,之前的伪静态也不能使用了,这里交给大家一个快速设计PW9的伪静态和PHPwind 8.7升级来后,如何使用继续使用以前的伪静态的方法. 官方只提供了新版的伪静态的设计方法,如图: 搜索伪静态,按照要求开启即可, Apache Web Server 配置 在www目录下自带了.htaccess文件,开启了rewrite后可直接使用,更改了格式后也无需更改这个文件内容. IIS配置