前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nginx 日志获取不到远程访问ip问题解决

nginx 日志获取不到远程访问ip问题解决

作者头像
joshua317
发布于 2018-04-16 04:13:56
发布于 2018-04-16 04:13:56
2K00
代码可运行
举报
文章被收录于专栏:技术博文技术博文
运行总次数:0
代码可运行

公司有一个应用,后端web用的是nginx,nginx 的所有请求都是通过前端的代理转发过来的,所有在日志格式里面 获取远程ip的变量用的是 $http_x_forwarded_for ,本来用的好好的,但是有一天日志分析脚本里面出现很多请求的 ip地址是空的,大概格式如下 - - - [20/May/2011:02:23:44 -0700] "GET /favi.ico HTTP/1.1" 404 56 "-" "Mozilla/5.0 (Windows NT 6.1; rv:2.0) Geo/20100101 Firefox/4.0" - __cust=000000004A5BB94DD441F61302282103 - - 0.002 - - - [20/May/2011:02:23:45 -0700] "GET /favi.ico HTTP/1.1" 404 56 "-" "Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gec/20100101 Firefox/4.0" - __cust=000000004A5BB94DD441F61302282103 - - 0.001 - - - [20/May/2011:02:23:45 -0700] "GET /favi.ico HTTP/1.1" 404 56 "-" "Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gec/20100101 Firefox/4.0" - __cust=000000004A5BB94DD441F61302282103 - - 0.001   很讨厌,为什么会出现这种访问ip为空的现象呢,后来经过分析问题应该出在 $http_x_forwarded_for 这个变量上,因为这个变量获取ip的途径是代理服务器,如果有一些请求没有经过代理服务器而是直接绑定 服务器的host来访问这台服务器的话 $http_x_forwarded_for 根本无法获取到真实的ip地址,所以日志ip地址那里就变成了 “-” ,后来我们用 $remote_addr 就可以得到这个绑定服务器ip 来访问服务器的家伙的ip了。

不过通过代理 访问过来的ip 就获取不到了。怎么办呢?办法来了,写一个if判断,格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set $remote_addrx $http_x_forwarded_for;
         if ( $remote_addrx ~ "" ) {
             set $remote_addrx $remote_addr;
        }

然后在log_format 里面用新定义的$remote_addrx变量来代替$http_x_forwarded_for就可以了

一、没有使用代理服务器的情况:       REMOTE_ADDR = 您的 IP       HTTP_VIA = 没数值或不显示       HTTP_X_FORWARDED_FOR = 没数值或不显示 二、使用透明代理服务器的情况:Transparent Proxies       REMOTE_ADDR = 最后一个代理服务器 IP       HTTP_VIA = 代理服务器 IP       HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。    这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。 三、使用普通匿名代理服务器的情况:Anonymous Proxies       REMOTE_ADDR = 最后一个代理服务器 IP       HTTP_VIA = 代理服务器 IP       HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。    隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。 四、使用欺骗性代理服务器的情况:Distorting Proxies       REMOTE_ADDR = 代理服务器 IP       HTTP_VIA = 代理服务器 IP       HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。    告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。 五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)       REMOTE_ADDR = 代理服务器 IP       HTTP_VIA = 没数值或不显示       HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。    完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
php获取客户端IP和服务器端IP[通俗易懂]
在PHP获取客户端IP时,常使用 _SERVER[“REMOTE_ADDR”] 。但如果客户端是使用代理服务器来访问,那取到的是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用_SERVER[“HTTP_X_FORWARDED_FOR”]来读取。
全栈程序员站长
2022/11/15
4.9K0
getenv(php7.0以上版本不不能使用的问题)[通俗易懂]
REMOTE_ADDR = 您的 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示
全栈程序员站长
2022/08/09
4520
再论 ASP.NET 中获取客户端IP地址
说到IP获取无非是我们常见的以下几种方式,但是具体获取的值具体区别在哪?网上不乏相关文章,说的也是很详细,但是真正使用起来,还有很多不太对的地方。IP在不同系统中,应用相当广泛,常见的日志记录、广告分区域投放等。 1: HttpContext.Current.Request.ServerVariables["HTTP_VIA"]; 2: HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
逸鹏
2018/04/11
4.2K0
再论 ASP.NET 中获取客户端IP地址
PHP实现检测客户端是否使用代理服务器及其匿名级别
REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。
V站CEO-西顾
2018/06/10
2.1K1
php检测用户是否使用代理上网的方法
获取用户IP地址的三个属性的区别(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
零式的天空
2022/03/02
1.6K0
2018-09-25 如何取得wap和web用户的真实IP
https://blog.csdn.net/rogerjava/article/details/9418211
Albert陈凯
2018/09/30
1.6K0
php获取客户端真实IP 防止代理和作弊
内容提要:这种情况下同样透露了客户端是使用了代理服务器,但编造了一个虚假的随机IP(220.4.251.159)代替客户端的真实IP来欺骗它……   获取客户端ip其实不是个简单的活儿,因为存在Ip欺骗,和代理问题,所以获取客户端的IP的真实性会打折扣的,不能百分百准确.但是我们还是尽量找一个比较完善的获取客户端真正ip方法.使用php获取IP的方法能找到很多.
皇上得了花柳病
2020/05/05
2.6K0
php获取客户端ip以及ip伪造
声明:因为使用了cdn之后无法正常的获取客户端ip,则做此次记录,仅供学习交流,请不要用于非法用途,由此教程产生的法律问题均与本人无关!
天方
2022/09/14
5.6K0
php获取客户端ip以及ip伪造
声明:因为使用了cdn之后无法正常的获取客户端ip,则做此次记录,仅供学习交流,请不要用于非法用途,由此教程产生的法律问题均与本人无关!
天方
2022/08/30
5.4K0
PHP获取客户端IP地址方式
  使用这种代理时,不同浏览器不同设备会返回不同的ip头信息,因此PHP使用_SERVER["REMOTE_ADDR"] 、
全栈程序员站长
2022/11/17
5.3K0
Nginx 日志格式配置介绍
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
授客
2019/09/11
2.9K0
nginx日志格式分析
这其中有个$http_x_forworded_for ,当前端有代理服务器时,设置web节点记录客户端IP,同时代理服务器也需要进行相关http_x_forworded_for的配置
全栈程序员站长
2022/08/22
1.9K0
nginx未被编译模块添加安装及日志记录负载均衡的真实客户端IP
nginx -V (注意是大写的V) 查看对应的nginx版本 以及当时的 configure arguments: 即当时编译安装的nginx参数项 是否有你要的 --with-http_realip_module 配置,如果有了就直接后续改配置,如果没有那就先安装对应的模块
阿湫..
2023/08/04
4280
带你了解代理 IP 那些事
在爬取某些网站时,我们经常会设置代理 IP 来避免爬虫程序被封。我们获取代理 IP 地址方式通常提取国内的知名 IP 代理商(如西刺代理,快代理,无忧代理等)的免费代理。这些代理商一般都会提供透明代理,匿名代理,高匿代理。那么这几种代理的区别是什么?我们该如何选择呢?本文的主要内容是讲解各种代理 IP 背后的原理。
猴哥yuri
2018/09/21
1.1K0
带你了解代理 IP 那些事
获取访客 IP 的正确姿势
那么究竟应该用哪种呢?我们先来看下 REMOTE_ADDR 、 HTTP_X_FORWARDED_FOR 、 HTTP_CLIENT_IP 是什么。 REMOTE_ADDR 访客 IP ,如果使用代理访问则显示代理 IP HTTP_X_FORWARDED_FOR 访客 IP ,如果不使用代理访问则为空 HTTP_CLIENT_IP 代理服务器 IP ,如果不使用代理访问则为空 注意 REMOTE_ADDR 是无法更改的,而 HTTP_X_FORWARDED_FOR 、 HTTP_CLIENT_IP 是由客户端(一般指代理服务器)自行设定的。
php007
2019/08/16
1.9K0
获取访客 IP 的正确姿势
nginx之配置proxy_set_header问题梳理
将左侧匹配到的/proxy_path/开头的url全部转发到后端服务器 192.168.223.137。
小勇DW3
2019/12/20
9.4K0
nginx之配置proxy_set_header问题梳理
你好!正向代理!
反向代理暂且不提,太熟了!nginx、Fikker、Traefik、haproxy随随便便能说出四五个。
IT运维技术圈
2022/06/26
7450
你好!正向代理!
Tomcat捕获Nginx反向代理协议IP及端口配置
最近的技术调整,需要获取Nginx端请求方式是http还是https。我们当前的架构属于典型的互联网架构,Nginx+Tomcat+Mysql,启用了反向代理。当前并没有启用全站https,因此客户端发出的请求基于模块的方式使用http或者https协议。关于捕获这个请求的协议,我们需要使用到Nginx ngx_http_proxy_module这个模块中的proxy_set_header指令来进行配置。本文描述通过这个命令来实现捕获请求协议。
Leshami
2018/08/06
1.7K0
nginx反向代理获取客户端的真实IP和域名
nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递到应用程序中。
用户7639835
2021/08/28
4.7K0
nginx反向代理中proxy_set_header 运维笔记
Nginx proxy_set_header:即允许重新定义或添加字段传递给代理服务器的请求头。该值可以包含文本、变量和它们的组合。在没有定义proxy_set_header时会继承之前定义的值。默认情况下,只有两个字段被重定义: proxy_set_header Host $proxy_host; proxy_set_header Connection close; 如果启用缓存,来自之前请求的头字段“If-Modified-Since”, “If-Unmodified-Since”, “If-None-
洗尽了浮华
2018/01/23
18.8K0
nginx反向代理中proxy_set_header 运维笔记
相关推荐
php获取客户端IP和服务器端IP[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档