zoukankan      html  css  js  c++  java
  • .Net Core/Framework之Nginx*后获取客户端IP等数据探索

      公司项目最近出现获取访问域名、端口、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 ForwardedHeadersOptions
    2 {
    3     ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
    4 });

     

    通过上面的配置后发现通过 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属性配置代理地址范围。官方文档地址: 点击这里

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

  • 相关阅读:
    BZOJ2303:[APIO2011]方格染色(并查集)
    BZOJ1116:[POI2008]CLO(并查集)
    BZOJ4011:[HNOI2015]落忆枫音(DP,拓扑排序)
    洛谷1387 最大正方形
    洛谷 P1858 多人背包
    vijos 1085 Sunnypig闯三角关
    vijos 1030 重叠的方框
    codevs 1001 舒适的路线 WK
    1266. [NOIP2012] 借教室
    codevs 2370 小机房的树
  • 原文地址:https://www.cnblogs.com/niao/p/10305953.html
Copyright © 2011-2022 走看看