error_page and named locations

Igor Sysoev is at rambler-co.ru
Thu Dec 11 19:09:56 MSK 2008


On Thu, Dec 11, 2008 at 05:18:51PM +0300, Igor Sysoev wrote:

> On Thu, Dec 11, 2008 at 02:56:16PM +0100, Jean-Philippe Moal wrote:
> 
> > Igor Sysoev a ??crit :
> > >>>
> > >>> I'm going to implement the non_existant_request_file directive to use
> > >>> in similar configurations:
> > >>>
> > >>>     location ~\.php$ {
> > >>>         non_existant_request_file  @drupal;
> > >>>
> > >>>         fastcgi_pass  ..
> > >>>     }
> > >>>
> > >>> This directive test a request file existance before passing a request
> > >>> to fastcgi/proxy.
> > >>>
> > >>> Could someone suggest better name ?
> > >> Also I want to replace typcal mongrel configuration:
> > >>
> > >> with something like
> > >>
> > >>      location / {
> > >>          match  $request_filename
> > >>                 $request_filename/index.html
> > >>                 $request_filename.html;
> > >>                 @mongrel;
> > >>      }
> > >>
> > >> like "index" directive.
> > >>
> > >> Or
> > >>
> > >>          try    $request_filename
> > >>                 $request_filename/index.html
> > >>                 $request_filename.html
> > >>                 /some_fallback_url;
> > > 
> > > The single directive can be used for Mongrel type configuration:
> > > 
> > >       location / {
> > >           file_match  $uri  $uri/index.html  $uri.html
> > >                       @mongrel;
> > >       }
> > > 
> > >       location @mongrel {
> > >           ...
> > >       }
> > > 
> > > and Drupal/Joomla type configuration:
> > > 
> > >       location / {
> > >           file_match  $uri  @drupal;
> > >           # the same as
> > >           #    error_page  404 = @drupal; log_not_found off;
> > >       }
> > > 
> > >       location ~ \.php$ {
> > >           file_match  $uri  @drupal;
> > > 
> > >           fastcgi_pass   ...
> > >           fastcgi_param  SCRIPT_FILENAME /path/to$script_filename;
> > >       }
> > > 
> > >       location @drupal {
> > >           fastcgi_pass   ...
> > >           fastcgi_param  SCRIPT_FILENAME /path/to/index.php;
> > >       }
> > > 
> > > The file_match iterates parameters and changes URI to the first one
> > > that matches filesystem. An @name matches always and is used as fallback.
> > > All matches except fallback are handled in the same location context.
> > 
> > I think "try" is a good name for this feature (which will certainly be _really_
> > useful, thanks !).
> 
> How about "try_file  $uri  $uri/index.html ..." or "test_file  $uri ..." ?

Or "use_file" ?


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list