目录

标签: Nginx

.net core 解决 NGINX 反向代理引起的获取 IP 地址为127.0.0.1

一个项目一直在线上运行了一年多,近期将它从windows平台移植到了linux平台运行,一切顺利。但是….操作过程中唯独增添了一个 NGINX 反向代理,最终导致了获取客户端请求IP不正确的问题,获取结果为:::ffff:127.0.0.1

红色区域表示存在的问题,绿色区域表示我已经修改好的结果

以前以简单的获取NGINX转发的一个Header “X-Real-IP” 来获取的真实IP,今天查资料偶然发现还有个更简单的方式:

在.net core项目中的 Starup.cs 文件中加入以下代码即可:

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

原有项目中的代码不做改变:

 string clientIP = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString();

以上即可。

参考资料1:https://www.cnblogs.com/niao/p/10305953.html

参考资料2:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-3.1