ПРОЕКТЫ 


  АРХИВ 


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: бага или фича?



Hello!

On Fri, Sep 24, 2010 at 09:59:50AM -0400, Dmitry Veselov wrote:

> Интересный момент, что если вместо
> 
> location ~* \.(css|flv|gif|html|jpg|js|png|swf|xml)$ {
> 
> поставить
> 
> location / {
> 
> То есть, кэширование всего сразу, то
> отваливаются индексные файлы index.html, и
> nginx выдает ошибку 403 при любой линке
> типа http://www.bla-bla.com/link/ даже если ему
> прописать в конфигурации директиву index
> index.html
> [b]Притом происходит это не сразу, а
> через несколько минут ? возможно когда
> устаревает кэш.[/b]

proxy_store - это не кеш, а способ локального сохранения файлов.  
И про индексы ничего не знает.  И если файл с указанным именем 
сохранить невозможно - он его просто не сохранит.

При этом proxy_store on; - задаёт простой маппинг в файловую 
систему с учётом root/alias.

В результате:

- Первый запрос к /link/ не найдёт каталога /path/to/root/link и 
  вернёт 404.  После чего пойдёт к бекенду и пытается сохранить 
  файл /path/to/root/link/, и по очевидным причинам у него это не 
  получится.  В error_log'е должно быть про это.  Вообще, читать 
  error_log - полезно.

- Любой запрос к файлу в /link/blah создаст каталог 
  /path/to/root/link, и в нём файл blah.

- Любой последующий запрос к /link/ найдёт каталог 
  /path/to/root/link, и будет пытаться искать в нём индексный 
  файл, не найдёт, убедится что autoindex выключен и вернёт 403 
  (есть каталог, но смотреть индекс прав нет).

Вариантов решения приблизительно два:

1. Написать proxy_store с использованием переменных, и где явно 
указать что запросы заканчивающиеся на '/' нужно сохранять в 
нужный вам индексный файл.  При этом не забыть ещё и добавить 
обработку 403 - потому что ситуацию, когда запросят сначала 
/link/blah, а уже потом /link/ - никто не отменял.

2. Не использовать инструмент который вы не понимаете, а 
использовать proxy_cache.  Он гораздо более предназначен для 
задач кеширования.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.