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

匿名 (未验证) 提交于 2019-12-02 22:06:11

  公司项目最近出现获取访问域名、端口、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 转接头替换方案

1 app.UseForwardedHeaders(new ForwardedHeadersOptions 2 { 3     ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto 4 });

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

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!