Я пытаюсь реализовать простой ограничение скорости системы с Nginx (v1.6.2)Nginx limit_req не работает
сайтов доступный/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;
}
}
конф. д/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.
Вы слишком много вырезали из конфигурации –
Я так не думаю. Там не так много, кроме server_name .. –
Ну, ваше местоположение '/ test' переписывается в'/test.txt', и этот файл не соответствует 'location =/test', поэтому он обслуживается каким-либо другим местоположением (или по адресу _default_), который, очевидно, не содержит директивы limit_req. –