【发布时间】:2015-04-09 10:53:53
【问题描述】:
我正在尝试使用 nginx (v1.6.2) 实现一个简单的速率限制系统
sites-available/mysite.com:
limit_req_zone $binary_remote_addr zone=myzone:10m rate=2r/m;
server {
listen 80;
server_name mysite.com;
root /var/www/vhosts/mysite.com;
error_log [..];
access_log [..];
include conf.d/php-fpm.conf;
location = / {
limit_req zone=myzone burst=3 nodelay;
index index.html;
}
location / {
try_files $uri =404;
}
location ^~ /pages {
include conf.d/php-fpm.conf;
internal;
}
location = /email {
rewrite ^(.*)$ /pages/email.html;
}
location = /email/subscribe {
limit_req zone=myzone burst=2 nodelay;
rewrite ^(.*)$ /pages/email.php?action=subscribe;
}
location ~ /api {
limit_req zone=myzone burst=5 nodelay;
rewrite ^(.*)$ /pages/api.php;
}
}
conf.d/php-fpm.conf:
location ~ \.php$ {
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
nginx.conf:
没什么有趣的,只有include sites-enabled/*;
速率限制/ 工作正常。如果我对此页面的请求过多,我会收到错误 503。
问题:/email/subscribe、/api 和 /api/test 都没有速率限制,我不知道为什么。肯定跟rewrite有关系,但是有什么问题呢?
有任何想法吗?我什么都试过了!
请注意:我已更改文件名和 URL 端点。
【问题讨论】:
标签: nginx webserver rewrite rate