分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

.Net Core/Framework之Nginx反向代理后获取客户端IP等数据探索

发布时间:2023-09-06 02:31责任编辑:郭大石关键词:反向代理

  公司项目最近出现获取访问域名、端口、IP错误现象,通过排查发现, 之前项目一直通过Nginx自定义Headers信息来获取,但最近运维人员失误操作造成自定义Header信息丢失,造成项目拿不到对应的数据。思前想后,想找找官方有没有关于此类问题通用标准化的解决方案。

一、Nginx配置如下:

proxy_redirect ????????????off;proxy_set_header ????????Host ????????????$host;proxy_set_header ???????X-Real-IP ????????$remote_addr;proxy_set_header ???????X-Forwarded-For ???$proxy_add_x_forwarded_for;proxy_set_header ???X-Forwarded-Proto $scheme;proxy_set_header ??Upgrade $http_upgrade;proxy_set_header ??Connection keep-alive;proxy_cache_bypass $http_upgrade;client_max_body_size ????10m;client_body_buffer_size 128k;proxy_connect_timeout ????90;proxy_send_timeout ????????90;proxy_read_timeout ????????90;proxy_buffers ???????????32 4k;

二、.Net Framework Headers 转接头替换方案

在web.congfig文件中通过配置aspnet:UseHostHeaderForRequestUrl解决:

1 <appSettings>2 ???<add key="aspnet:UseHostHeaderForRequestUrl" value="true"/>3 </appSettings>

三、.Net Core Header 转接头替换方案

Startup.cs 中 Configure 函数 添加如下配置

1 app.UseForwardedHeaders(new ForwardedHeadersOptions2 {3 ????ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto4 });

通过上面的配置后发现通过 HttpContext.Current.Connection.RemoteIpAddress 还是获取不到代理前的数据,仔细读了官方文档后发现,此配置只对Nginx与项目同时部署在同一台server(本机localhost)时有效,多台server需在项目中配置代理的IP地址才能有效的替换转接头信息,代码如下: 

app.UseForwardedHeaders(new ForwardedHeadersOptions{ ???ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto, ???KnownProxies = { IPAddress.Parse("172.17.0.0") }});

也可通过KnownNetworks属性配置代理地址范围。官方文档地址: 点击这里

  自此该问题已完美解决,有了标准化的配置方案,减少技术人员更替对项目的不熟造成的一些失误。

.Net Core/Framework之Nginx反向代理后获取客户端IP等数据探索

原文地址:https://www.cnblogs.com/niao/p/10305953.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved