nginx 之postread 阶段:获取真实客户端地址的realip 模块

如果拿到真实的用户IP地址,需要有如下前提

1、TCP 连接四元组 (src_ip,src_port,dst_ip, dst_port)

2、HTTP头部X-Forwarded-For 用户传递IP

3、HTTP头部X-Real-IP用户传递用户IP 

4、网络中存在许多反向代理

X-Forwarded-For: 115.203.2.22,1.1.1.1
X-Real-IP: 115.203.2.22

拿到真实用户IP地址如何使用, nginx 是基于变量来使用的

如:binary_remote_addr、remote_addr 这样的变量,其值就是真实的IP; 这样做连接限制(limit_conn模块) 才有意义.

realip 模块,默认是不会编译进nginx 中的,可以通过如下启用功能:

--with-http_realip_module 

变量:

realip_remote_addr
reaip_remote_port

指令:

set_real_ip_from
set_ip_header
real_ip_recursive

下面来演示一下

realip.conf 

server {

  server_name  realip.zk02.com;
  set_real_ip_from 192.168.27.152;

  real_ip_header X-Forwarded-For;

  real_ip_recursive  off;



  location  / {

          return  200 "Client  real ip: $remote_addr\n";

        }


}

使用include 指令加入到nginx.conf 中.

include   /soft/nginx/conf/example_conf/realip.conf;

使用curl 命令验证一下

[root@zk02 conf]# curl -H 'X-Forwarded-For: 1.1.1.1,192.168.27.152' realip.zk02.com
Client  real ip: 192.168.27.152

当    real_ip_recursive  on;  时

[root@zk02 conf]# curl -H 'X-Forwarded-For: 1.1.1.1,192.168.27.152' realip.zk02.com
Client  real ip: 1.1.1.1
[root@zk02 example_conf]# curl -H 'X-Forwarded-For: 1.1.1.1,2.2.2.2,192.168.27.152' realip.zk02.com
Client  real ip: 2.2.2.2

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值