首页 新闻 赞助 找找看

.NET Core读取IP地址

0
悬赏园豆:100 [已解决问题] 解决于 2017-06-26 10:25

部署在Linux下,使用nginx做代理,但是还是读取不出来IP,请问各位大神怎么搞得?

public string getRemoteIp()
 {
       var ip = httpContextAccessor.HttpContext.Request.Headers["X-Original-For"].FirstOrDefault();
      if (string.IsNullOrEmpty(ip))
         {
             ip = "*.*.*.*";
         }
        return ip;
}
Kencery的主页 Kencery | 菜鸟二级 | 园豆:357
提问于:2017-06-24 15:47
< >
分享
最佳答案
1

在ASP.NET Core中没有ServerVariables的对应实现,需要换一种方式,可以在HttpContext.Request.Headers中获取,需要注意的是key与ServerVariables方式不一样,ServerVariables中是"HTTP_X_FORWARDED_FOR",HttpContext.Request.Headers中是"X-Forwarded-For",示例代码如下:

public static class HttpContextExtension
{
public static string GetUserIp(this HttpContext context)
{
var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
if (string.IsNullOrEmpty(ip))
{
ip = context.Connection.RemoteIpAddress.ToString();
}
return ip;
}
}

收获园豆:100
张善友 | 小虾三级 |园豆:557 | 2017-06-24 23:14
其他回答(3)
0

在Nginx中配置添加如下内容试试:

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
}

来自:HTTP 请求头中的 X-Forwarded-For

CodeHsu | 园豆:5468 (大侠五级) | 2017-06-24 21:27
0

public string getRemoteIp()
{
var ip = HttpContext.Request.Headers["X-Original-For"].FirstOrDefault();
if (string.IsNullOrEmpty(ip))
{
ip = "...";
}
return ip;
}

RookieBoy666 | 园豆:156 (初学一级) | 2020-03-20 15:45
0

http://localhost:5250/Default/home  IP地址: ::1

峡谷少爷 | 园豆:220 (菜鸟二级) | 2021-11-12 09:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册