我正在使用Azure WebApp(docker-compose),它将Nginx作为反向代理和.net核心应用程序。去年,我们的客户端数量增加了很多,我们开始使用Azure Front Door作为CDN来缓存静态内容。问题是现在我们不再能够为我们的日志SQL表获取客户端IP地址。
这是没有AFD的代码:
Nginx default.conf:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Dotnet Startup.cs:
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
但是添加AFD,它总是获得CDN的IP地址。
我知道AFD通过X-Azure-ClientIP
头,但我无法在Nginx或dotnet中获得它。
你知道如何使用Azure Front Door,Nginx和dotnet core获得真实的客户端IP地址吗?
先谢谢你了。
1条答案
按热度按时间hm2xizp91#
Azure Front Door将客户端IP信息保存在自己的日志中。在Azure门户中,您可以通过转到“日志”刀片来访问这些日志:
您可以使用Kusto查询信息,例如,此查询将检索过去15分钟内所有请求的时间戳,请求URI和客户端IP:
如果你想将这些信息拉到你自己的SQL日志中,你可以使用Azure Logic应用程序、Azure Runbook和PowerShell查询或其他几种解决方案以编程方式检索它。