mog*_*smo 5 nginx proxy redirect 301-redirect rate-limiting
我在 nginx 后面的 apache 服务器上有一个批量搜索表单。我想保护该位置,以便 10 分钟内的第二个请求将 301 转到“您想使用我们的 API”页面,而不是类似以下内容:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location = /search/bulk {
limit_req zone=one burst=2;
... SOME CONFIG HERE...
}
}
}
Run Code Online (Sandbox Code Playgroud)
当他们达到我的 limit_req 而不是显示 ngnix 错误页面时,我将如何 301 最终客户端?此外,其次,我不想限制整个 http 条款的流量。我可以在没有速率的情况下设置 limit_req_zone,但将它们放在我的位置节中吗?
谢谢,
M。
默认情况下,nginx
将返回503 service temporarily unavailable
错误代码。
该limit_req_status
指令的存在是为了更改错误代码,以防它们遇到limit_req
:
location = /search/bulk {
limit_req zone=one burst=2;
limit_req_status 404;
}
Run Code Online (Sandbox Code Playgroud)
问题是这个指令只允许从 400 到 599 的范围,所以你不能指定一个301
:
[emerg] 3130#0: value must be between 400 and 599 in /etc/nginx/nginx.conf:72
Run Code Online (Sandbox Code Playgroud)
因此,如果您的主要问题是显示自定义错误消息而不是默认错误消息,则503
可以按如下方式进行:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location = /search/bulk {
limit_req zone=one burst=2;
error_page 503 /503.html;
}
location /503.html {
internal;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你的自定义503.html
文件:
<html><body>Would you like to use our API ?</body></html>
Run Code Online (Sandbox Code Playgroud)
该rate
参数是强制性的。您必须指定一个费率limit_req_zone
归档时间: |
|
查看次数: |
3209 次 |
最近记录: |