【问题标题】:Remote IP in Azure App Service served over HTTPS for a custom domainAzure 应用服务中的远程 IP 通过 HTTPS 为自定义域提供服务
【发布时间】:2017-05-22 08:39:10
【问题描述】:

我的目标是通过 HTTPS 从自定义域提供 Azure 应用服务。 此应用接收 HTTPS POST 请求,并应在此过程中记录远程 IP。

我一般获取远程IP地址,调用客户端的IP,如下:

HttpRequest request = ...
var IP = request.HttpContext.Connection.RemoteIpAddress;

为了让应用通过 HTTPS 为自定义域提供服务,我启用了 azure CDN 端点。

现在我记录的 IP 是给 CDN 服务器而不是调用客户端的。

是否有可能得到源IP?

有问题的请求是 HTTPS POST,因此 CDN 缓存应该不是问题。

Azure CDN 是否添加任何可能包含此类信息的标头?

将 SSL 证书直接添加到应用服务会改变什么吗?

【问题讨论】:

    标签: ssl azure-web-app-service azure-cdn


    【解决方案1】:

    通过测试,我发现 Azure CDN 在 X-Forwarded-For 标头中添加了客户端的真实 IP。

    我发现的唯一提及此标头的是在 Azure CDN documentation 中提到该标头已保留。

    【讨论】:

      【解决方案2】:

      This article 描述了 Azure CDN 的工作原理,我们可以知道用户通过 CDN 请求文件,如果 POP 中的边缘服务器在其缓存中没有文件,则边缘服务器从源端请求文件。用户请求不会直接从客户端用户发送到源站,因此如您所见,它记录的是边缘服务器的 IP,而不是调用客户端的 IP。

      【讨论】:

      • Amazon CloudFront 也这样做,但他们有关于 X-Forwarded-For 的文档。 Azure 是否有这样做的任何文档?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 2019-08-30
      • 2012-06-28
      • 2019-12-06
      • 2018-04-02
      • 2017-04-23
      相关资源
      最近更新 更多