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
|