.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