Re: Баг try_files + valid_referers
Maxim Dounin
mdounin at mdounin.ru
Thu Aug 29 12:00:16 UTC 2013
Hello!
On Thu, Aug 29, 2013 at 02:47:01PM +0300, Андрей Василишин wrote:
> 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) {
> access_log
> /var/log/nginx/site.com.invalid.log main;
> }
> if ($a) {
> access_log
> /var/log/nginx/a.site.com.access.log main;
> }
>
> }
>
>
> Почему-тоЮ, если приходит запрос с реферером, которого нет в
> valid_referers, try_files почему-то проверяет только $uri и потом
> возвращает сразу 404:
http://wiki.nginx.org/IfIsEvil
Конкретно ваш случай - "try_files wont work due to if".
[...]
> Ну, и чтоб два раза не вставать: какой альтернативный способ писать
> отдельный лог для invalid_referer?
Варианты - уйти в другой location и писать отдельный лог там,
писать лог с переменными в имени.
--
Maxim Dounin
http://nginx.org/en/donation.html
Подробная информация о списке рассылки nginx-ru