Am 29.04.2015 15:48, schrieb Maxim Dounin:
> 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] [1 [1]] >> Regards, sebres. Links: ------ [1] >> https://github.com/sebres/nginx/commits/hg-sb-mod [1] > >> # 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 "@..."? Function "ngx_http_core_find_named_location" if location was found set "r->loc_conf = (*clcfp)->loc_conf" and returns NGX_OK. > 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 As I wrote it already (of course it is not a static location): Example, instead of : # auth_request /auth_loc/; You can use named location @auth_loc and write now: auth_request @auth_loc; Regards, sebres. Links: ------ [1] https://github.com/sebres/nginx/commits/hg-sb-mod
_______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel