how to make a named location in subrequest

Maxim Dounin mdounin at mdounin.ru
Thu Jan 19 16:06:26 UTC 2012


Hello!

On Thu, Jan 19, 2012 at 07:24:29AM -0500, bigplum wrote:

> Hi,
> 
> Previously, I wrote a module to make a subrequest to backend. nginx.conf
> like that:
> 
> location /file {
>     nphase_uri /dummy;
>     nphase_set_uri_var $np_uri http://backend;
> }
> 
> location /dummy {
>     proxy_pass $np_uri;
> }
> 
> The module could send original URI "http://localhost/file/abcd.txt" to
> backend to process.
> And the module could get response from backend and decide to continue or
> refuse.
> 
> But now This fix disabled sending original URI to backend.
> 
>     *) Bugfix: a "proxy_pass" directive without URI part might use
> original
>        request after redirection with the "try_files" directive.
> 
> If we need to send same request to backend, we must use named location.
> But it
> seems that named location is not support in subrequest. The named
> location only
> processed in try_files phase.
> 
> Following configuration would not work, for the subrequest send a
> request "GET /dummy"
> rather than original URI.
> 
> location /dummy {
>     try_files /dummy @named;
> }
> location @named {
>     proxy_pass $np_uri;
> }
> 
> So how do I make it work?

You may explicitly specify URI you want to use in a request to 
backend, i.e.

    location /dummy {
        proxy_pass $np_uri$request_uri;
    }

Maxim Dounin



More information about the nginx mailing list