前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx获取请求真实IP

nginx获取请求真实IP

作者头像
十毛
发布2021-07-14 14:49:52
3.2K0
发布2021-07-14 14:49:52
举报
文章被收录于专栏:用户1337634的专栏

客户端和服务器之间如果通过反向代理连接,服务器端获取到的客户端IP实际上是反向代理的IP,那么有什么办法可以拿到客户端真实IP吗?

获取真实IP的原理

  • 方案一:反向代理转发请求会把客户端IP添加到头部: x-real-ip,服务器可以从这个字段读取到真实IP,但是如果反向代理有多级的话,这种方式就没办法了。
  • 方案二:反向代理在转发请求时,会在x-forwarded-for后面添加自己的IP,这样服务器就可以从x-forwarded-for的IP列表中判断出客户端IP。 因为header头是可以修改的,所以我们不能直接从x-forwarded-for从去第一个IP,而是从后往前取第一个非安全区的IP(直白来说就是就是非己方的IP)

使用样例

  • 先需要编译安装
代码语言:javascript
复制
./configure --with-http_realip_module
  • 配置文件设置
代码语言:javascript
复制
# 设置可信IP,支持多个,也支持网段和IPv6
set_real_ip_from  192.168.1.0/24;
set_real_ip_from  192.168.2.1;
# 从X-Forwarded-For解析客户端真实IP,默认是X-Real-IP
real_ip_header    X-Forwarded-For;

real_ip_recursive on;
server {
        # 省略其他配置....
        # nginx直接返回客户端IP到body
        location /ip {
            default_type text/plain;
            # 返回remote_addr, x_real_ip, realip_remote_addr, x_forwarded_for
            return 200 "remote_addr:$remote_addr\nx_real_ip:$http_x_real_ip\nrealip_remote_addr:$realip_remote_addr\nhttp_x_forwarded_for:$http_x_forwarded_for\n";
        }
}
  • 请求内容(使用tcpdump抓包得到的)
代码语言:javascript
复制
GET /ip HTTP/1.1
User-Agent: PostmanRuntime/7.28.1
Accept: */*
x-forwarded-for: 10.43.44.73
x-real-ip: 10.43.44.73
Host: 9.134.77.51
x-client-ip: 10.43.44.73
Connection: keep-alive
Accept-Encoding: gzip
  • 返回值body
代码语言:javascript
复制
remote_addr:9.218.225.23
x_real_ip: 9.218.225.23
realip_remote_addr:9.45.201.1
http_x_forwarded_for:9.218.225.23

谓词解释

  • set_real_ip_from {ip || subnet}: 设置安全区IP或网段(进入该网段的第一个IP则被认为真实IP)
  • real_ip_header {X-Forwarded-For | X-Real-IP}: 解析真实IP的两种方式
  • real_ip_recursive on|off:

新增变量

realip模块会修改remote_addr和remote_port,会用一个realip_remote_addr和realip_remote_port表示nginx原来的地址和端口

  • realip_remote_addr: 直连请求方的ip, 比如反向代理
  • realip_remote_port: 直连请求方的port

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取真实IP的原理
  • 使用样例
  • 谓词解释
  • 新增变量
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档