.net 获取客户端真实ip
Nginx 如何设置
情况1
在只有1层nginx代理的情况下,设置nginx配置“proxy_set_header X-Forwarded-For $remote_addr;”。(此时$remote_addr获取的是用户的真是ip)
情况2
在有多层反向代理的情况下,
1)设置“最外层”nginx配置和情况1一样“proxy_set_header X-Forwarded-For $remote_addr;”。
2)除了“最外层”之外的nginx配置“proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;”。
注意
如果你的 nginx 使用了 http_realip_module 模块,那么必须再配置一下受信任的cdn、nginx节点,否则 nginx 会认为X-Forwarded-For的内容都是可靠的,无法识别别人伪造的 X-Forwarded-For 头。
proxy_pass http://8.2.158.1:11029;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
set_real_ip_from 8.168.31.5;
set_real_ip_from 8.168.31.6;
set_real_ip_from 16.18.22.0/24;
8.168.31.5、8.168.31.6、16.18.22.*网段 是cdn的ip地址,告诉 nginx 可以信任
Asp.Net 获取客户端真实ip
编写一个静态方法:
public static string GetRemoteIpAddress(HttpContext httpContext, string[] trustXForwardedFor)
{
var remoteIpAddr = httpContext.Connection.RemoteIpAddress.ToString();
if (trustXForwardedFor != null && trustXForwardedFor.Length > 0 && httpContext.Request.Headers.TryGetValue("X-Forwarded-For", out StringValues x_for))
{
var x_forArr = x_for.ToString().Split(',').Select(m => m.Trim()).Where(m => m.Length > 0).ToArray();
if (trustXForwardedFor.Contains(remoteIpAddr))
{
for (int i = x_forArr.Length - 1; i >= 0; i--)
{
var ip = x_forArr[i];
if (trustXForwardedFor.Contains(ip) == false)
return ip;
}
}
else
{
return remoteIpAddr;
}
}
return remoteIpAddr;
}
然后在controller内部调用:
GetRemoteIpAddress(this.HttpContext, new string[] { "127.0.0.1", "::ffff:127.0.0.1", "172.19.149.142" })
"127.0.0.1", "::ffff:127.0.0.1", "172.19.149.142" 这是指定3个被排除的反向代理以及cdn的ip , 如果不传这些ip,那就表示服务器那边没有部署nginx这类型的反向代理服务,也没有使用cdn。
JMSFramework 微服务获取客户端真实ip
JMS 的 controller 自身就包含 GetRemoteIpAddress 方法,在controller 里面直接调用即可。
this.GetRemoteIpAddress(new string[] { "127.0.0.1", "::ffff:127.0.0.1", "172.19.149.142" });
.net 获取客户端真实ip的更多相关文章
- 获取客户端真实ip
// 获取客户端真实ip() protected function getIP() { global $ip; if (getenv("HTTP_CLIENT_IP")) $ip ...
- Java Web 获取客户端真实IP
Java Web 获取客户端真实IP 发生的场景:服务器端接收客户端请求的时候,一般需要进行签名验证,客户端IP限定等情况,在进行客户端IP限定的时候,需要首先获取该真实的IP.一般分为两种情况: 方 ...
- 获取客户端真实IP地址
Java-Web获取客户端真实IP: 发生的场景:服务器端接收客户端请求的时候,一般需要进行签名验证,客户端IP限定等情况,在进行客户端IP限定的时候,需要首先获取该真实的IP. 一般分为两种情况: ...
- nginx 代理模式下,获取客户端真实IP
最近做博友推荐,发现个小问题,用$_SERVER['REMOTE_ADDR'];得到的都是服务器的地址192.168.96.52,搜索了一下,发现问题,改为$_SERVER['HTTP_X_REAL_ ...
- Java 获取客户端真实IP地址
本文基于方法 HttpServletRequest.getHeader 和 HttpServletRequest.getRemoteAddr 介绍如何在服务器端获取客户端真实IP地址. 业务背景 服务 ...
- Nginx反向代理后应用程序获取客户端真实IP
Nginx反向代理后,Servlet应用通过request.getRemoteAddr()取到的IP是Nginx的IP地址,并非客户端真实IP,通过request.getRequestURL()获取的 ...
- 伪造IP及获取客户端真实IP地址
Fiddler支持自定义规则,可以实现对HTTP请求数据发送给Server前或HTTP应答数据发送给浏览器前进行修改.下面的例子将演示如何向所有HTTP请求数据中增加一个头.1)打开Fiddler,点 ...
- Kubernets中获取客户端真实IP总结
1. 导言 绝大多数业务场景都是需要知道客户端IP的 在k8s中运行的业务项目,如何获取到客户端真实IP? 本文总结了通行的2种方式 要答案的直接看方式一.方式二和总结 SEO 关键字 nginx i ...
- Tomcat 8.5中获取客户端真实IP及协议
获取客户端真实IP ServletRequest接口提供了getRemoteAddr方法用于获取客户端IP,但是当客户端通过代理服务器访问后端服务器的时候,服务器调用getRemoteAddr方法会返 ...
- 某云负载均衡获取客户端真实IP的问题
某云负载均衡真实IP的问题,我们这边已经遇到过两次了.而且每次和售后沟通的时候都大费周折,主要是要给售后说明白目前文档的获取真实IP是有问题的,他们觉得文档上说明的肯定没问题,售后要是不明白,他们不会 ...
随机推荐
- 「学习笔记」扩展 KMP(Z 函数)
对于个长度为 \(n\) 的字符串 \(s\).定义 \(z[i]\) 表示 \(s\) 和 \(s[i,n-1]\)(即以 \(s[i]\) 开头的后缀)的最长公共前缀(LCP)的长度.\(z\) ...
- 【io_uring】简介和使用
文章目录 简介 使用 系统调用 liburing 样例 代码流程 编译 参考资料 简介 io_uring 是 Linux 在 5.1 版本引入的一套新的异步 IO 实现.相比 Linux 在 2.6 ...
- 如何修改min.js或者压缩后的js,以便提高代码的可读性。
前端的js上线的时候一般会使用打包工具处理(webpack,gulp,ugly.js 等).这样做有几点作用. 可以压缩空间,提高页面响应速度 一定程度上可以保护自己的代码安全,防止别人清晰看懂逻辑或 ...
- Jmeter逻辑控制器Switch Controller的用法
一.概述 类似编程语言中的switch函数,Switch Controller根据给定的值n(可使用变量)选择执行其下的 第n+1个子节点. 作用:Switch Controller通过给该控制器中的 ...
- 创建Anaconda虚拟Python环境的方法
本文介绍在Anaconda环境下,创建.使用与删除Python虚拟环境的方法. 在Python的使用过程中,我们常常由于不同Python版本以及不同第三方库版本的支持情况与相互之间的冲突情况, ...
- jenkin部署(docker+gitlab)
第一部分 安装部署 1.1 gitlab安装部署 最小配置 内存至少4g,系统内核至少在3.10以上 uname -r 可查看系统内核版本 默认docker已经安装 1.安装gitlab 127机器 ...
- 【技术积累】《MongoDB实战》笔记(1)
<MongoDB实战>笔记 第一章 为现代Web而生的数据库 特性 mongodb适合做水平扩展的数据库. mongodb把文档组织成集合,无schema. 索引 mongodb的二级索引 ...
- CF433B
题目简化和分析: 为了更加快速的求出答案,好像没前缀和快速. 为了大家更好的理解线段树,我们使用了线段树. 如果您并不了解线段树,可以转战模板. 因为我们知道线段树可以快速求区间和,于是我们建两棵树. ...
- 【PHP反序列化】速览
PHP反序列化 一.原理 序列化就是将对象转化成字符串,反序列化相反.数据的格式转换和对象的序列化有利于对象的保存 . 反序列化漏洞:就是php对数据进行反序列化时,没有进行过滤,导致用户可以控制反序 ...
- 从0到1实现 OpenTiny 组件库跨框架技术
本文分享自华为云社区<从0到1实现 OpenTiny 组件库跨框架技术>,作者:华为云社区精选 . 在华为云<DTSE Tech Talk>技术直播第44期<0基础玩转 ...