使用 Cloudflare 时使用 web.config 限制 Azure IP

Azure IP throttle with web.config while using Cloudflare

如果用户在 Y 毫秒内发出 X 次请求,我想拒绝他们访问我的网站。根据 Microsoft 的说法,我可以在 Web 配置中使用 dynamic ip security

这是我用于测试 ip 节流阀的配置的外观:

<security>
    <dynamicIpSecurity>
        <denyByRequestRate enabled="true" maxRequests="2" requestIntervalInMilliseconds="10000"></denyByRequestRate>
    </dynamicIpSecurity>
</security>

现在我的问题是:因为我使用的是 Cloudflare,所以我看不到访问者的真实 IP。根据 Cloudflare 的说法,他们在几个 headers 中提供了真实的 IP。虽然,Azure 在检查是否应拒绝 IP 时似乎不会查看这些 headers。

我的问题是:有什么方法我仍然可以使用 Web 配置方式拒绝 IP 请求,还是我需要使用代码解决方案?

我想我找到了我自己问题的答案。我会 post 在这里为可能有相同问题的人提供我的发现。

根据 this 有一个名为“enableProxyMode”的属性

Enables IIS not only to block requests from a client IP that is seen by IIS, but also to block requests from IP addresses that are received in the x-forwarded-for HTTP header.

由于 Cloudflare 将访问者的真实 IP 放在 X-Forwarded-For HTTP header 中,因此它可以完美运行。