给定以下 NGinx 配置,我将如何更改它以仅向429 个响应发出 Retry-After 标头?
limit_req_zone $binary_remote_addr zone=ip:10m rate=5r/s;
limit_req_status 429;
limit_conn_status 429;
server {
listen 80;
location /api {
limit_req zone=ip burst=12 nodelay;
proxy_pass http://website;
}
}
Run Code Online (Sandbox Code Playgroud)
有一个变量$status
保存响应状态值。您可以使用map
指令定义另一个保存重试延迟的变量并使用add_header
指令。
add_header Retry-After $retry_after always;
Run Code Online (Sandbox Code Playgroud)
add_header
如果值(第二个参数)为空,则不会发送标头。我们需要always
标志,否则它不会为 429 状态码设置标头。
完整示例:
limit_req_zone $binary_remote_addr zone=ip:10m rate=5r/s;
limit_req_status 429;
limit_conn_status 429;
map $status $retry_after {
default '';
429 '120';
}
server {
listen 80;
location /api {
limit_req zone=ip burst=12 nodelay;
proxy_pass http://website;
add_header Retry-After $retry_after always;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3370 次 |
最近记录: |