rewrite в именованный location

Igor Sysoev is at rambler-co.ru
Thu Jul 30 13:55:56 MSD 2009


On Thu, Jul 30, 2009 at 01:42:28PM +0400, Alex, the Marrch Ca'at wrote:

> Ну да. Вот живой пример из моего конфига:
> 
>     location ^~ /index.php {
>         access_log /var/log/nginx/access_log main_cached;
> 
>         default_type text/html;
>         memcached_gzip_flag 18;
>         gzip on;
>         gunzip on;
> 
>         set $memcached_key "TSites::Index::$host";
>         memcached_pass localhost:11211;
> 
>         error_page 404 502 504 = @fcgi;
>     }
> 
>     location ~ \.php$ {
>         access_log /var/log/nginx/access_log main;
>         fastcgi_pass   backend;
>         fastcgi_index  index.php;
>         fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
>         include       /etc/nginx/fastcgi_params;
>     }
> 
>     location @fcgi {
>         internal;
> 
>         access_log /var/log/nginx/access_log main;
>         fastcgi_pass   backend;
>         fastcgi_index  index.php;
>         fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
>         include       /etc/nginx/fastcgi_params;
>     }
> 
> Этот же код из @fcgi дублируется еще в двух location-ах, поскольку
> извращаться с искусственным перенаправлением ошибки мне не хотелось. А
> так везде можно написать goto @fcgi; - что будет и компактнее и
> понятнее и проще поддерживать.

На мой взгляд, такое синтаксически нужно делать так:

   location  ~\.php$
             @fcgi
             ...
   {
        ...
   }

Кстати, это ещё и сэкономит память. Только там есть одна проблема в том,
что имя location'а хранится в конфигурации. Как сделать, чтобы несолько
location'ов имели одну и ту же конфигруацию - пока не знаю.

> Sincerely yours -
> Alex, the Marrch Ca'at
> 
> 2009/7/30 Igor Sysoev <is at rambler-co.ru>:
> > On Thu, Jul 30, 2009 at 12:04:37AM +0700, Bokhan Artem wrote:
> >
> >> Kirill A. Korinskiy пишет:
> >> >Собственно для тех, кому надоело видеть извращения типо:
> >> >
> >> >error_page 503=@name;
> >> >return 503;
> >> >
> >> >Предлагаю патчик:
> >> >
> >> >http://catap.ru/blog/2009/07/28/nginx-rewrite-to-named-location/
> >>
> >> Игорь, просьба добавить этот функционал в основную ветку, если возможно.
> >
> > Я не совсем понимаю модель применения. Что-то вроде
> >
> >     location /one {
> >         goto  @php;
> >     }
> >
> >     location /two {
> >         goto  @php;
> >     }
> >
> >     location /three {
> >         goto  @php;
> >     }
> >
> >     location @php {
> >         ...
> >     }
> >
> > ?
> >
> >
> > --
> > Игорь Сысоев
> > http://sysoev.ru
> >
> >

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





More information about the nginx-ru mailing list