ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: internal и allow/deny



On Mon, Feb 09, 2009 at 02:51:51PM +0300, Роман Маширов wrote:

> Добрый день!
> 
> Есть location, из которого отдаются закешированные файлы в ssi. Если 
> файла нет, запрашиваем бэк:
> 
>        location /block {
>            root /.../cache_back;
> 
>            error_page   404  =  @fallback;
>            log_not_found off;
>        }
> 
> Далее, блоки показывать пришедшим снаружи не хочу, поэтому добавляю 
> internal. В результате все запросы снаружи на /block ломятся на бэк. 
> Поведение соответствует документации, но не здравому смыслу...
> 
>        location /block {
>            root /.../cache_back;
> 
>            error_page   404  =  @fallback;
>            internal;
>            log_not_found off;
>        }
> 
> Если запретить доступ для всех, кроме самого фронта:
> 
>        location /block {
>            root /.../cache_back;
> 
>            error_page   404  =  @fallback;
>            internal;
>            allow 127.0.0.1;
>            deny all;
>            log_not_found off;
>        }
> 
> Получаю еще более странную штуку -- запросы все равно ломятся на бэк. По 
> всей видимости internal имеет более высокий приоритет чем allow/deny? Я 
> что-то упустил, или internal в таком случае неприменим? Может логичнее 
> было бы отдавать 403 на internal а не 404?

internal отрабатывает раньше allow/deny.

403 говорит, что на сервере такой location существует, а 404 полностью
скрывает от клиента существование location'а.

Решить проблему можно с помощью try_files:

     location /block {
        internal;
        try_files  $uri  @fallback;
     }


-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.