bat*_*to3 1 rewrite nginx rate-limiting
我想为 php-fpm 配置不同的速率限制。
我想要:
/ admin /.+
有不同的限制。我对实现点 3 有问题。现在我测试:
limit_req_zone $binary_remote_addr zone=php:10m rate=2r/s;
limit_req_zone $binary_remote_addr zone=admin:10m rate=9r/s;
server {
location / {
try_files $uri $uri/ /index.php?$args;
}
limit_req_status 429;
# limitng works, server return 404
location ~ /admin/ {limit_req zone=admin...}
location ~ [^/]\.php(/|$) {
limit_req zone=php burst=9 delay=4;
#limit_req not allowed here
if($request_uri ~ /admin) {limit_req zone=admin...}
#not update limits (lower)
location ~ ^/admin/ {limit_req zone=admin...}
#negative matching returns index.php content
location location ~ ^/(?!(admin)) {limit_req zone=php...}
}
}
Run Code Online (Sandbox Code Playgroud)
也是,但如果我理解的话,这会为和limit_req_zone $request_uri
创建不同的池。/admin/1
/admin/2
//更新1:
我需要不同的池来满足以下请求:
/index.php?/.*
并且不太严格/index.php?/admin/.*
根据limit_req_zone
指令文件:
不考虑具有空键值的请求。
因此,只需limit_req
在 PHP 处理程序位置中使用两个指令,并将其中一个区域键设置为空,具体取决于$request_uri
(在这种情况下,将不应用第一个或第二个请求限制率):
map $request_uri $is_admin {
~^/admin/ 1;
default 0;
}
map $is_admin $php_key {
0 $binary_remote_addr;
# an empty value otherwise by default
}
map $is_admin $admin_key {
1 $binary_remote_addr;
# an empty value otherwise by default
}
limit_req_zone $php_key zone=php:10m rate=2r/s;
limit_req_zone $admin_key zone=admin:10m rate=9r/s;
server {
...
location ~ [^/]\.php(/|$) {
limit_req zone=php ...
limit_req zone=admin ...
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2126 次 |
最近记录: |