<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=KOI8-R" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Игорь, спасибо!<br>
<br>
Правильно ли я понимаю, в таком случае можно ограничиться allow
127.0.0.1 deny all, без internal, если не нужно скрывать от посетителя
сам факт существования /block?<br>
<br>
И еще, пользуясь случаем -- по поводу 304 not modified и
x-accel-redirect -- в итоге не существует способа отключить проверку
файла по if-modified-since?<br>
<br>
Igor Sysoev wrote:
<blockquote cite="mid:20090209120059.GD12926@rambler-co.ru" type="cite">
  <pre wrap="">On Mon, Feb 09, 2009 at 02:51:51PM +0300, Роман Маширов wrote:

  </pre>
  <blockquote type="cite">
    <pre wrap="">Добрый день!

Есть 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?
    </pre>
  </blockquote>
  <pre wrap=""><!---->
internal отрабатывает раньше allow/deny.

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

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

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


  </pre>
</blockquote>
<br>
</body>
</html>