ПРОЕКТЫ 


  АРХИВ 


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: Помогите решить проблем у



On Wed, Mar 31, 2010 at 12:34:50PM -0400, straj wrote:

> Здравствуйте эксперты и автор(ы) nginx'a.
> 
> Сейчас хостюсь у никхоста, поставил nginx как frontend перед апачем. 
> Статику отдаю соответсвенно nginx'ом. Но хочется еще больше снизить нагрузку! 
> 
> Решил сделать кеш из старниц, которые редко меняются, например так выглядит 
> обращение к форуму
> 
> 
> location ~* ^/forum/.+\.html$ {
>       if (-f /home/site/site.ru/docs/cache/nginx$document_uri) {
>               root /home/site/site.ru/docs/cache/nginx;
>               break;
>       }
>       
>       rewrite ^/forum/([0-9]+)\.html$ /forum/index.php?id=$1&nginx=1 last;
> }
> 
> 
> 
> данная связка уже работает... в принципе жалоб нет...
> 
> Но хочется еще большего, решил закешировать главную, делаю так:
> 
> 
> location = / {
>       if (-f /home/site/site.ru/docs/cache/nginx/index.html) {
>               root /home/site/site.ru/docs/cache/nginx/index.html; #<<<<<
>               break;
>       }
>       
>       rewrite ^/$ /index.php?id=1&nginx=1 last;
> }
> 
> 
> Ну и соответственно не получается :)
> 
> выдает ошибку 404...смотрю в логи там говорится что не может найти файл 
> /home/site/site.ru/docs/cache/nginx/index.html/index.html
> 
> я так понял надо значит убрать из рута /index.html убираю.... после чего 
> открывает только по редиректу даже если файл создан....
> 
> ммм... думаю...возможно если он ругается на рут может и из проверки убрать 
> /index.html .... убираю , при этом ничего не меняется также проход только 
> через редирект....
> 
> Смотрел в документации nginx'a там есть еще директива index ... ставлю ее 
> после рута...ошибка типа такая директива не поддерживается... значит мой 
> nginx не содержит его (нет модуля соответсвуещего)
> 
> Вопрос(ы):
> 1. Возможно ли без директивы index в данном случае?
> 2. Если нет, возможно ли без перекомпиляции самого nginx'a добавить index?
> 
> Да кстати пока писал подумал о принудительном редиректе на index.html, типа 
> такого:
> 
> 
> # Home 1
> location = / {
>       if (-f /home/site/site.ru/docs/cache/nginx$document_uri) {
>               rewrite ^(.+)$ /index.html last;
>               break;
>       }
>       rewrite ^(.+)$ /index.php?id=1 last;
> }
> 
> # Home 2
> location = /index.html {
>       root /home/site/site.ru/docs/cache/nginx;
> }
> 
> 
> Но ожидаемого эффекта НЕТ... все идет через редирект апачу...
> 
> Пожалуйста помогите разобраться!

Не нужно использовать if... нужно использовать try_files...
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#try_files


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

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


 




Copyright © Lexa Software, 1996-2009.