Hello! On Wed, Apr 29, 2015 at 09:18:11AM +0200, Sergey Brester wrote:
> > > Hi, > > enclosed you will find an attached changeset, that: > > - allows to fast use of named location in sub requests, such as > auth_request, etc. Currently no named location was possible in any sub > requests, real (or internal) locations only. > > # now you can use named location in sub requests: > # auth_request /auth_loc/; > auth_request @auth_loc; > > - in addition, a second mini-commit (37d7786e7015) with new directive > "use_location" as alias or replacement for "try_files" with no file > argument and without checking the existence of file(s): > > # try_files "" @loc > use_location @loc > > It was allready more times discussed (goto location, etc.). > > PS. If someone needs a git version of it: > https://github.com/sebres/nginx/commits/hg-sb-mod [1] > > Regards, > > sebres. > > Links: > ------ > [1] https://github.com/sebres/nginx/commits/hg-sb-mod > # HG changeset patch > # User Serg G. Brester (sebres) <serg.bres...@sebres.de> > # Date 1430227790 -7200 > # Tue Apr 28 15:29:50 2015 +0200 > # Node ID 37d7786e7015f8a784e6a4dc3f88f8a7573a4c08 > # Parent 96e22e4f1b03ff15a774c6ed34d74b897af32c55 > http-core: new directive "use_location" as replacement or alias for > "try_files" with no file > argument and without checking the existence of file(s): > > `use_location @loc` replaces `try_files "" @loc` Something like this was previously discussed more than once, and the short answer is "no". > # HG changeset patch > # User Serg G. Brester (sebres) <serg.bres...@sebres.de> > # Date 1430228073 -7200 > # Tue Apr 28 15:34:33 2015 +0200 > # Node ID 43135346275c76add5bf953024a3d244f04184ba > # Parent 37d7786e7015f8a784e6a4dc3f88f8a7573a4c08 > http-core: allow to fast use of named location in (internal) sub requests, > ex.: auth_request, etc.; > > diff -r 37d7786e7015 -r 43135346275c src/http/ngx_http_core_module.c > --- a/src/http/ngx_http_core_module.c Tue Apr 28 15:29:50 2015 +0200 > +++ b/src/http/ngx_http_core_module.c Tue Apr 28 15:34:33 2015 +0200 > @@ -22,6 +22,7 @@ typedef struct { > > > static ngx_int_t ngx_http_core_find_location(ngx_http_request_t *r); > +static ngx_int_t ngx_http_core_find_named_location(ngx_http_request_t *r, > ngx_str_t *name); > static ngx_int_t ngx_http_core_find_static_location(ngx_http_request_t *r, > ngx_http_location_tree_node_t *node); > > @@ -1542,6 +1543,16 @@ ngx_http_core_find_location(ngx_http_req > noregex = 0; > #endif > > + /* already internal - check is resp. can be named location - search it */ > + > + if (r->internal && r->uri.len >= 1 && r->uri.data[0] == '@') { > + > + if (ngx_http_core_find_named_location(r, &r->uri) == NGX_OK) { > + > + return NGX_OK; > + } > + } > + And how it's expected to be processed in a named location if r->uri is "@..."? Note that named locations are ones where requests are handled with their original URIs unmodified. This, in particular, allows to use the original URI to select a file, or in a request to the upstream server, etc. With what you are trying to do it doesn't look different from a static location. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel