2014-11-22 5 views
1

Эта конфигурация limit_req работает, если я нажимаю непосредственно на php-страницы (index.php), но не попадает/[pretty urls] и переписывает ее в index.php? $ Args.NGINX second limit_req не работает после перезаписи

limit_req_zone $binary_remote_addr zone=dynamic:10M rate=1r/s; 
limit_req_zone $binary_remote_addr zone=static:10M rate=60r/s; 

location/{ 
      limit_req zone=static burst=180; 
      try_files $uri $uri/ /index.php?$args; 
    } 

location ~ \.php$ { 
      limit_req zone=dynamic burst=5; 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 

      set $fsn /index.php; 
      if (-f $document_root$fastcgi_script_name){ 
        set $fsn $fastcgi_script_name; 
      } 

      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      include fastcgi_params; 
      fastcgi_param SCRIPT_FILENAME $document_root$fsn; 
      fastcgi_param PATH_INFO  $fastcgi_path_info; 
      fastcgi_param PATH_TRANSLATED $document_root$fsn; 
    } 

Это, очевидно, получает в нужное место, потому что она проходит в бэкэнд, но limit_req не кажется, будет использоваться. Я не могу найти ничего обсуждающего это ограничение в документах. У кого-нибудь есть идеи?

Редактировать: Комментирование первого с помощью zone = static позволяет обрабатывать PHP-версию. Для меня это выглядит как ошибка в limit_req.

+0

Что такое содержимое limit_req_zone? –

+0

limit_req_zones определены в самом верху кодового блока – RobC

ответ

0

Похоже, что это работает так, как работает NGINX и модуль limit_req ... возможно, в будущем он поправится.

После многократного поиска я нашел сообщение для форума nginx, в котором говорится об этом http://forum.nginx.org/read.php?2,223426,223431, и появляется одно или оба из следующих утверждений (у меня нет интереса копаться в этом дальше).

  • Похоже, что если limit_req используется в 'location', используя директиву try_files, в будущих директивах limit_req не используются.
  • Это может быть быть в том, что после того, как местоположение обрабатывает директиву limit_req, они не будут обрабатываться в другом «местоположении», но несколько limit_reqs в одном «местоположении» должны работать нормально.

До сих пор решение моей конфигурации заключалось в том, чтобы удалить limit_req из/и установить новое соответствие регулярного выражения для статических файлов и поставить там limit_req для статических данных.