<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html><body style='font-size: 10pt; font-family: Verdana,Geneva,sans-serif'>
<p> </p>
<p>Am 30.04.2015 15:55, schrieb Maxim Dounin:</p>
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px"><!-- html ignored --><!-- head ignored --><!-- meta ignored -->
<pre>Hello!

On Wed, Apr 29, 2015 at 07:22:51PM +0200, Sergey Brester wrote:

[...]</pre>
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px">
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px">And how it's expected to be processed in a named location if r->uri is "@..."?</blockquote>
Function "ngx_http_core_find_named_location" if location was found set "r->loc_conf = (*clcfp)->loc_conf" and returns NGX_OK.</blockquote>
<pre>The problem is that the r->uri will be illegal.</pre>
</blockquote>
<p>I think not for internal request?!</p>
<p><span class="blob-code-inner"><span class="pl-k">if</span> (r->internal && r->uri.</span>..</p>
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px">
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px">
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px">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</blockquote>
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;</blockquote>
<pre>So what will happen if the location is:

    location @auth_loc {
        proxy_pass <a href="http://auth.backend">http://auth.backend</a>;
    }

Which URI will be used in a HTTP request to auth.backend?  As far 
as I see, with your code it will result in a

GET @auth_loc HTTP/1.0

request to the upstream server, and immediate 400 response is what 
will happen.</pre>
</blockquote>
<p>Yes, in this case the backend upstream should support such uri's or more likely in named location it should be overwritten...</p>
<p>But for subrequests (example for auth_request) is anyway original "document_uri" resp. "script_name" more interesting...<br />Anyway if proxy_pass should use real uri with "/" you can still use "normal" named convention for nonnamed internal location.</p>
<p>Here is my config for example:</p>
<p>        location @cgisvc_auth1 {<br />          fastcgi_keep_conn on;<br />          include fastcgi_params;<br />          fastcgi_pass_request_body off;<br />          fastcgi_pass http_cgi_backend;<br />        }</p>
<p>        location @cgisvc_auth2 {<br />          proxy_pass <a href="http://auth.backend">http://localhost:8088/</a>;<br />        }</p>
<p>        location /test1 {<br />          auth_request @cgisvc_auth1;<br />        }</p>
<p>        location /test2 {<br />          auth_request @cgisvc_auth2;<br />        }</p>
</body></html>