使用Nginx和Azure Front Door获取客户端IP地址

nr7wwzry  于 2023-05-16  发布在  Nginx
关注(0)|答案(1)|浏览(140)

我正在使用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地址吗?
先谢谢你了。

hm2xizp9

hm2xizp91#

Azure Front Door将客户端IP信息保存在自己的日志中。在Azure门户中,您可以通过转到“日志”刀片来访问这些日志:

您可以使用Kusto查询信息,例如,此查询将检索过去15分钟内所有请求的时间戳,请求URI和客户端IP:

AzureDiagnostics
| where TimeGenerated > now(-15m)
| project TimeGenerated, requestUri_s, clientIp_s

如果你想将这些信息拉到你自己的SQL日志中,你可以使用Azure Logic应用程序、Azure Runbook和PowerShell查询或其他几种解决方案以编程方式检索它。

相关问题