JinYazhou +

关于.net core使用nginx做反向代理获取客户端ip的问题

获取IP地址

////// 获取客户Ip

//////

/// < returns >

public static string GetClientUserIp(this HttpContext context)

{

  var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();

  if (string.IsNullOrEmpty(ip))

  {

      ip = context.Connection.RemoteIpAddress.ToString();

  }

  return ip;

}


1、正常情况下.net core获取客户端ip是比较简单的 ,通过这样一个方法就能获取到客户端ip。

2、但是,我在centos下使用nginx代理后,这样指向的就是本地ip了,所以需要将nginx获取到的ip传递到.net core web站点。

3、首先,我们需要在Startup.cs里添加

app.UseForwardedHeaders(new ForwardedHeadersOptions

{

   ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto

});


nginx配置


server {

  listen 80;

  location / {

      proxy_pass http://localhost:5000;

      proxy_http_version 1.1;

      proxy_set_header Upgrade $http_upgrade;

      proxy_set_header Connection keep-alive;

      proxy_set_header Host $host;

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_cache_bypass $http_upgrade;

  }

}


重启nginx.

最新评论