From 86826c0bf3d8eb8b510e4e4a7b6a1f98670063ed Mon Sep 17 00:00:00 2001 From: Ben Jee Date: Thu, 20 Nov 2025 13:57:56 -0800 Subject: [PATCH 1/3] Add rate limit policy enhancement proposal --- docs/proposals/rate-limiting.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 docs/proposals/rate-limiting.md diff --git a/docs/proposals/rate-limiting.md b/docs/proposals/rate-limiting.md new file mode 100644 index 0000000000..97adcd1a4f --- /dev/null +++ b/docs/proposals/rate-limiting.md @@ -0,0 +1,21 @@ +# Enhancement Proposal-4059: Rate Limit Policy + +- Issue: https://github.com/nginx/nginx-gateway-fabric/issues/4059 +- Status: Provisional + +## Summary + +This Enhancement Proposal introduces the "RateLimitPolicy" API that allows Cluster Operators and Application Developers to configure NGINX's rate limiting settings for Local Rate Limiting (RL per instance) and Global Rate Limiting (RL across all instances). Local Rate Limiting will be available on OSS through the `ngx_http_limit_req_module` while Global Rate Limiting will only be available through NGINX Plus, building off the OSS implementation but also using the `ngx_stream_zone_sync_module` to share state between NGINX instances. In addition to rate limiting on a key, which tells NGINX which rate limit bucket a request goes to, users should also be able to define Conditions on the RateLimitPolicy which decide if the request should be affected by the policy. This will allow for rate limiting on JWT Claim and other NGINX variables. + +## Goals + +- Define rate limiting settings. +- Outline attachment points (Gateway and HTTPRoute/GRPCRoute) for the rate limit policy. +- Describe inheritance behavior of rate limiting settings when multiple policies exist at different levels. +- Define how Conditions on the rate limit policy work. + +## Non-Goals + +- Championing a Rate Limiting Gateway API contribution. +- Exposing Zone Sync settings. +- Support for attachment to TLSRoute. From 57702d942d3b46dfe6b683ccad88b44b6a8009ad Mon Sep 17 00:00:00 2001 From: Ben Jee Date: Thu, 20 Nov 2025 14:17:32 -0800 Subject: [PATCH 2/3] Fix pre-commit --- docs/proposals/rate-limiting.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/proposals/rate-limiting.md b/docs/proposals/rate-limiting.md index 97adcd1a4f..8e99443092 100644 --- a/docs/proposals/rate-limiting.md +++ b/docs/proposals/rate-limiting.md @@ -5,17 +5,17 @@ ## Summary -This Enhancement Proposal introduces the "RateLimitPolicy" API that allows Cluster Operators and Application Developers to configure NGINX's rate limiting settings for Local Rate Limiting (RL per instance) and Global Rate Limiting (RL across all instances). Local Rate Limiting will be available on OSS through the `ngx_http_limit_req_module` while Global Rate Limiting will only be available through NGINX Plus, building off the OSS implementation but also using the `ngx_stream_zone_sync_module` to share state between NGINX instances. In addition to rate limiting on a key, which tells NGINX which rate limit bucket a request goes to, users should also be able to define Conditions on the RateLimitPolicy which decide if the request should be affected by the policy. This will allow for rate limiting on JWT Claim and other NGINX variables. +This Enhancement Proposal introduces the "RateLimitPolicy" API that allows Cluster Operators and Application Developers to configure NGINX's rate limiting settings for Local Rate Limiting (RL per instance) and Global Rate Limiting (RL across all instances). Local Rate Limiting will be available on OSS through the `ngx_http_limit_req_module` while Global Rate Limiting will only be available through NGINX Plus, building off the OSS implementation but also using the `ngx_stream_zone_sync_module` to share state between NGINX instances. In addition to rate limiting on a key, which tells NGINX which rate limit bucket a request goes to, users should also be able to define Conditions on the RateLimitPolicy which decide if the request should be affected by the policy. This will allow for rate limiting on JWT Claim and other NGINX variables. ## Goals - Define rate limiting settings. - Outline attachment points (Gateway and HTTPRoute/GRPCRoute) for the rate limit policy. - Describe inheritance behavior of rate limiting settings when multiple policies exist at different levels. -- Define how Conditions on the rate limit policy work. +- Define how Conditions on the rate limit policy work. ## Non-Goals - Championing a Rate Limiting Gateway API contribution. - Exposing Zone Sync settings. -- Support for attachment to TLSRoute. +- Support for attachment to TLSRoute. From dcf9f348c274bd08ae357dd05ab9cfb71222111f Mon Sep 17 00:00:00 2001 From: Ben Jee Date: Thu, 20 Nov 2025 14:32:30 -0800 Subject: [PATCH 3/3] Add small wording change --- docs/proposals/rate-limiting.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/proposals/rate-limiting.md b/docs/proposals/rate-limiting.md index 8e99443092..93abce3166 100644 --- a/docs/proposals/rate-limiting.md +++ b/docs/proposals/rate-limiting.md @@ -16,6 +16,6 @@ This Enhancement Proposal introduces the "RateLimitPolicy" API that allows Clust ## Non-Goals -- Championing a Rate Limiting Gateway API contribution. -- Exposing Zone Sync settings. +- Champion a Rate Limiting Gateway API contribution. +- Expose Zone Sync settings. - Support for attachment to TLSRoute.