.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是有问题的,他们觉得文档上说明的肯定没问题,售后要是不明白,他们不会 ...
随机推荐
- Flutter 学习笔记(01)__从 0 开始创建一个 flutter 项目
最近发现有不少的公司已经跳出 uniapp 的坑坑,开始使用 flutter 开发app了,为了让自己不失业,赶紧卷起来!此篇文章教你从 0 基础开发一个 简单页面,文章篇幅较长,建议收藏!也可以直接 ...
- 我也来扒一扒python的内存回收机制!
python的内存回收是面试中经常会问到一个问题,今天我来给大家深度剖析下python的内存回收和缓存机制 1.引用计数器 我们知道,python是通过引用计数器来做内存回收的,下面我们来重点讲下引用 ...
- [ABC132D] Blue and Red Balls
2023-01-16 题目 题目传送门 翻译 翻译 难度&重要性(1~10):3 题目来源 AtCoder 题目算法 dp 解题思路 因为蓝球的数量是固定的,题目让我们求,在取 \(i\) 次 ...
- MIT6.s081/6.828 lectrue07:Page faults 以及 Lab5 心得
本篇博客主要是复习 MIT6.s081/6.828 lectrue07:Page faults 以及记录 Lab5 :COW fork 的心得 值得一提的是,2020 年之前的版本第 5 个 lab ...
- AI绘画:StableDiffusion炼丹Lora攻略-实战萌宠图片生成
写在前面的话 近期在小红书发现了许多极其可爱.美观的萌宠图片,对这些美妙的图像深深着迷 于是想着看看利用AI绘画StableDiffusion以下简称(SD)做出来. 以下是详细实操的全过程,包括所有 ...
- Lazada详情接口的应用
Lazada是东南亚电商领域的一家知名企业,Lazada商品详情接口是Lazada提供的一种获取Lazada平台商品详细信息的接口.本文将介绍Lazada商品详情接口的使用方法和相关注意事项. 第一步 ...
- LeetCode952三部曲之一:解题思路和初级解法(137ms,超39%)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 题目描述 难度:困难 编程语言:Java 给定一个由不 ...
- vscod 配置 morkdown 快捷键
vscod 配置 morkdown 快捷键 1.首先在根目录添加.vscode 文件夹 ️1.1 新建一个 settings.json 文件 { "[markdown]": { & ...
- C++算法之旅、06 基础篇 | 第四章 动态规划 详解
常见问题 闫式DP分析法 状态表示 集合 满足一定条件的所有方案 属性 集合(所有方案)的某种属性(Max.Min.Count等) 状态计算(集合划分) 如何将当前集合划分成多个子集合 状态计算相当于 ...
- Python/Java/Php/C#/Go/C/C++这几个主力语言,谁到底真的不行
1.前言 阿里最近又进行了史诗级的大裁员,IT行业肉眼可见的持续性衰退与没落.当潮水退却,才能看出谁在裸泳.作为当今计算机编程界的几大主力语言,谁才真正的裸泳者呢? 2.描述 1.Python: Py ...