Re: Баг try_files + valid_referers

Андрей Василишин a.vasilishin at kpi.ua
Thu Aug 29 17:06:18 UTC 2013


29.08.2013 18:07, Maxim Dounin пишет:
> Hello!
>
> On Thu, Aug 29, 2013 at 04:56:39PM +0300, Андрей Василишин wrote:
>
>> 29.08.2013 15:00, Maxim Dounin пишет:
>>
>>> Варианты - уйти в другой location и писать отдельный лог там,
>>> писать лог с переменными в имени.
>>>
>>
>> Что-то не могу придумать, как без  if это сделать.
>
> По приведённой в предыдущем письме ссылке написано, как это
> сделать, если вы про переход в другой location.
>
> Делать это без if - не обязательно, достаточно обеспечить, чтобы
> обработка запроса при попадании в if уходила в другой location
> (i.e., использовать if + rewrite ... last или if + return).
>
> http://wiki.nginx.org/IfIsEvil
>

Спасибо всем за ответы, в общем удалось сделать, то что хотел так:
         error_page 410                  = @invalid;
         error_page 411                  = @a;

         location / {
             index  index.php index.htm index.html;
             root   /var/www/site.com;
             try_files $uri
                 $uri/
                 /index.php?q=$uri&$args
                 @backend;
                 rewrite 
"^/([^\/]+/[^\/]+)/((s[\d]+)?(e[\d]+){1}(\-[\d]+)*)$" /$1.html?serie=$2;
                 rewrite ([^\/]+/[^\/]+.html)/$ /$1 permanent;
                 rewrite (tag/[^\/]+)/$ /$1 permanent;
                 valid_referers none server_names 
~(yandex|google|yahoo|bing|facebook|fbcdn|mail.ru|rambler|nigma|vk.com);
                 if ($invalid_referer) {
                          return 410;
                 }
                 if ($a) {
                          return 411;
                 }

         }
         location @a {
                 access_log  /var/log/nginx/a.site.com.access.log  main;
                 root   /var/www/site.com;
                 try_files $uri
                 $uri/
                 /index.php?q=$uri&$args;
         }
         location @invalid {
                 access_log  /var/log/nginx/site.com.invalid.log  main;
                 root   /var/www/site.com;
                 try_files $uri
                 $uri/
                 /index.php?q=$uri&$args;
         }



Подробная информация о списке рассылки nginx-ru