使用 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 中,因此它可以完美运行。
如果用户在 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 中,因此它可以完美运行。