【问题标题】:Asp.net Core get remote IP of client always returns 127.0.0.1Asp.net Core 获取客户端的远程 IP 总是返回 127.0.0.1
【发布时间】:2019-11-21 08:59:12
【问题描述】:

我的环境: Ubuntu 18.04、Asp.net Core 2.1、Nginx

我遵循this 教程。 我在 Startup.cs 中添加了这段代码:

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

我配置我的 Nginx 配置:

listen *:443 ssl http2;

location / {
        proxy_pass https://localhost:6001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-Proto-Version $http2;
        client_max_body_size 32m;
        keepalive_timeout 200;
        send_timeout 20;
        client_body_timeout 50;
        proxy_set_header  X-Forwarded-For $remote_addr;
    }

我通过以下方式获取远程 IP:

var ip = HttpContext.Connection.RemoteIpAddress?.ToString();

但它总是从任何 IP 返回 127.0.0.1。

【问题讨论】:

    标签: c# nginx asp.net-core


    【解决方案1】:

    我个人不得不手动获取标题值。这是由于云设置。也许这会对你有所帮助。

    if (Request.Headers.TryGetValue("X-Forwarded-For", out var forwardedIps))
        senderIpv4 = forwardedIps.First();
    

    【讨论】:

    • var ip = HttpContext.Connection.RemoteIpAddress?.ToString(); 如何返回 127.0.0.1
    【解决方案2】:

    指定反向代理IP或直接清除。

        services.Configure<ForwardedHeadersOptions>(options =>
        {
            options.ForwardedHeaders =ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
            options.KnownNetworks.Clear();
            options.KnownProxies.Clear();
        });
        ...
        app.UseForwardedHeaders();
    

    https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-3.1

    【讨论】:

      【解决方案3】:

      您在 nginx 配置中忘记了 proxy_set_header X-Forwarded-Proto $scheme;

      【讨论】:

      • 我添加了,重启nginx,我通过手机访问,但控制台仍然打印出127.0.0.1
      猜你喜欢
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2020-05-16
      • 2019-12-07
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 2015-04-24
      相关资源
      最近更新 更多