nginx禁止ip默认参数是$remote_addr无法禁止真实ip的问题
由于网站使用了cdn所以$remote_addr获取的ip是cdn的ip,我现在先禁止某些ip访问发现无法禁止cdn传递过来的客户端的ip也就是$http_x_forwarded_for这个参数。
比如我的日志格式这样的:
log_format main '$http_x_forwarded_for $remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$upstream_addr" up:$upstream_response_time-$request_time $upstream_http_content_length';
记录的日志:
140.207.197.63 10.1.60.250 - - [20/Aug/2015:17:18:39 +0800] "HEAD / HTTP/1.1" 403 0 "-" "Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322) 360JK yunjiankong 329117" "10.1.60.151:8080" up:0.006-0.231 14393
我想拒绝所有只允许140.207.197.63这个ip访问
allow 10.1.60.0/24;
allow 140.207.197.63;
deny all;
但是140.207.197.63访问却是403,10.1.60.0/24这个内网里面的ip访问却是正常的,于是乎发现nginx默认禁止的是$remote_addr参数而不是$http_x_forwarded_for。
那就想办法把cdn传递过来的真是ip变量$http_x_forwarded_for传递给$remote_addr,那就用到了这个模块--with-http_realip_module,编译安装的时候要启用。加上下面两个参数:
set_real_ip_from 10.1.60.250;
real_ip_header X-Forwarded-For;
意思就是所有来自10.1.60.250请求的header字段都改成X-Forwarded-For。这样就把真实ip传递给$remote_addr变量了。
它就是把x_forwarded_for设为remote_addr,而nginx里的x_forwarded_for取的就是其中第一个IP。
使用这些设置就能保证你的remote_addr里设定的一直都是客户端的真实IP。
然后再次访问:
140.207.197.63 10.1.60.250 - - [20/Aug/2015:17:18:39 +0800] "HEAD / HTTP/1.1" 200 0 "-" "Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322) 360JK yunjiankong 329117" "10.1.60.151:8080" up:0.006-0.231 14393
nginx禁止ip默认参数是$remote_addr无法禁止真实ip的问题的更多相关文章
- 020_nginx禁止ip默认参数是$remote_addr无法禁止真实ip的问题
由于网站使用了cdn所以$remote_addr获取的ip是cdn的ip,我现在先禁止某些ip访问发现无法禁止cdn传递过来的客户端的ip也就是$http_x_forwarded_for这个参数.比如 ...
- 服务器使用nginx做代理,通过HttpServletRequest获取请求用户真实IP地址
首先,在nginx配置中添加如下配置 server { listen ; server_name www.wenki.info; #要访问的域名 charset utf8; location / { ...
- PHP获取客户端的IP、地理信息、浏览器、本地真实IP
<?php header("Content-type:text/html;charset=utf-8"); // 作用获取客户端的ip.地理信息.浏览器.本地真实IP cla ...
- nginx的配置:目的是使用nginx反向代理后,应用程序获取用户真实ip
一.了解nginx Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作为HT ...
- nginx反向代理后应用程序如何获取客户端真实IP
每个location中增加配置: proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_se ...
- NGINX转发代理情况下,获取客户单真实IP
编译时加上http_realip_module 模块 realip模块生效的前提是:直接连接nginx的ip是在set_real_ip_from中指定的. 原机配置: set_real_ip_from ...
- 在有nginx做反向代理时候,如何获取用户真实Ip信息
在获取用户的Ip地址时,不一定可以获取到用户真实的地址信息,这要看代理服务器的类型,代理服务器有普通匿名代理服务器,高匿代理服务器,像这种情况很难获取到用户真实的Ip地址 假如用户没有使用匿名代理服务 ...
- nginx反向代理、让代理节点记录客户端真实IP
环境:根据http://www.cnblogs.com/zzzhfo/p/6032095.html环境配置 在web01或web02上查看用户访问日志 先客户端访问 [root@web_backup ...
- 关于nginx反向代理后获取不到客户端的真实ip地址问题
前段时间在我的网站上用nginx做了一下反向代理,最近发现不能获取客户端ip了,都是拿到的127.0.0.1的本地ip... 通过查资料后,再去看了看我的配置文件,结果发现我没有如下配置: nginx ...
随机推荐
- Unity项目接入应用宝SDK实现截图功能
Unity项目接入应用宝SDK实现截图功能 问题由来 点击应用宝悬浮窗 如图所示 左下角有一个截图按钮 需要解决那些问题 截图信息需要由游戏引擎提供 SDK获取截图信息为同步 但是Unity引擎没有提 ...
- Jmeter保存时,完美解决提示的“拒绝访问”
使用Jmeter时,想保存测试计划,提示"拒绝访问“,这是为啥? 因为给Jmeter的权限不够,也就是说,在打开它的时候,直接双击打开,没有选择”以管理员身份运行“,就会导致”拒绝访问“ ! ...
- odoo开发笔记 -- 视图继承扩展
参考: http://www.jeffzhang.cn/Odoo-Notes-2/ http://blog.csdn.net/zhangfeng1133/article/details/4693517 ...
- 【原创】SQL Server 性能调优读书笔记
CPU 100%: 有时可能是硬盘性能不足,或者内存容量不够,让CPU一直忙于I/O. 导致性能问题的一些因素: 用户习惯:在运行尖峰时刻做一些不必做但消耗资源的事情,如之行数据库完整备份,如在服务器 ...
- 13、最新安卓Xamarin绑定相关填坑之旅
今天群里面有兄弟伙说第三方库用不起.说实话在我觉得第三方库能成功的几率大于90% 除了极少数恶心的库以外. 绝大部分第三方库都还是可以绑定好的 https://github.com/youzan/Yo ...
- Spark集群之Spark history server额外配置
Note: driver在SparkContext使用stop()方法后才将完整的信息提交到指定的目录,如果不使用stop()方法,即使在指定目录中产生该应用程序的目录,history server ...
- CentOS7 配置 Redis单实例
Redis单实例安装 环境.准备 安装 作为服务启动 启动 1.环境.准备 系统 CentOS7 最小化安装. gcc安装,Make时需要. yum -y install gcc 下载安装包 下载当前 ...
- Android面试题(1)
1. Java语言基本数据类型有哪些?分别占用的内存空间是多少? 答: byte(1字节),boolean(1字节),char(2字节),short(2字节),int(4字节),float(4字节) ...
- RocketMQ多Master多Slave模式部署
每个 Master 配置一个 Slave,有多对Master-Slave,HA采用同步双写方式,主备都写成功,向应用返回成功. 优点:数据与服务都无单点,Master宕机情况下,消息无延迟,服务可用性 ...
- es-08-hadoop集成
1, 版本匹配: https://www.elastic.co/guide/en/elasticsearch/hadoop/current/requirements.html 2, maven集成: ...