<div dir="ltr"><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)"><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">I'll answer to my own question there:<br><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">

Apparently,
 yes, evaluating something with the 'if' directive doesn't propagate the
 environment containing the variables from the 'location' directive.<br>
</div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">All explained on <a href="http://stackoverflow.com/questions/10876252/nginx-given-custom-subdomain-location-regex-matching-with-http-user-agent-con" target="_blank">StackOverflow</a>.<br>


<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">The <b><span style="color:rgb(102,0,0)">incorrect</span></b> way:<div class="im"><br><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">



location ^~ /documents/(\w+) {<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">    if ($1 != $remote_user) {<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">



        return 503;<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">    }<br></div>}<br></div></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)"><i>--> $1 variable is unknown</i><br>


<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">The <span style="color:rgb(39,78,19)"><b>correct</b></span> way:<br><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">



location ^~ /documents/(\w+) {<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">    set $user $1;<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">    if ($user != $remote_user) {<br>


</div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">
        return 503;<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">    }<br></div>}<br><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">Although the syntax is now OK and the configuration is able to be reloaded, it doesn't seem to work at all...<br>


<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">When connecting with the user 'abc', I am still able to access /documents/def/mydoc.txt.<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">


What's wrong with my way of restricting access?<br><br></div>Thanks for any help,</div><div class="gmail_extra"><div><font size="1"><span style="color:rgb(102,102,102)">---<br></span><b><span style="color:rgb(102,102,102)">B. R.</span></b><span style="color:rgb(102,102,102)"></span></font></div>


<br><br><div class="gmail_quote">On Thu, Feb 28, 2013 at 5:36 PM, B.R. <span dir="ltr"><<a href="mailto:reallfqq-nginx@yahoo.fr" target="_blank">reallfqq-nginx@yahoo.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr"><div style="font-size:small;color:rgb(51,51,153)">Hello,<br><br></div><div style="font-size:small;color:rgb(51,51,153)">I am using basic auth + $remote_user variable send to the back-end application to change context depending on the logged-in user.<br>


<br></div><div style="font-size:small;color:rgb(51,51,153)">The thing is, even if the page rendered by the back-end uses nginx user authentication, resources from a directory are still allowed for everyone.<br>
<br></div><div style="font-size:small;color:rgb(51,51,153)">My 'documents' directory is sorted as follows:<br></div><div style="font-size:small;color:rgb(51,51,153)">documents/<br>
</div><div style="font-size:small;color:rgb(51,51,153)">    abc/ --> stores content for user 'abc'<br></div><div style="font-size:small;color:rgb(51,51,153)">    def/ --> stores content for user 'def'<br>


    ...<br></div><div style="font-size:small;color:rgb(51,51,153)"><br></div><div style="font-size:small;color:rgb(51,51,153)">I tried the following:<br></div><div style="font-size:small;color:rgb(51,51,153)">
location ^~ /documents/(\w+) {<br></div><div style="font-size:small;color:rgb(51,51,153)">    if ($1 != $remote_user) {<br></div><div style="font-size:small;color:rgb(51,51,153)">
        return 503;<br></div><div style="font-size:small;color:rgb(51,51,153)">    }<br></div><div style="font-size:small;color:rgb(51,51,153)">}<br><br></div><div style="font-size:small;color:rgb(51,51,153)">
But Nginx refuses to validate configuration:<br>nginx: [emerg] unknown "1" variable<br>nginx: configuration file /etc/nginx/nginx.conf test failed<br><br></div><div style="font-size:small;color:rgb(51,51,153)">


Does the 'if' directive have an environment isolated for the on of the 'location' directive?<br></div><div style="font-size:small;color:rgb(51,51,153)">Am I using wrong syntax?<br></div>
<div style="font-size:small;color:rgb(51,51,153)">Is there a 'IfIsEvil' case corresponding to my needs to avoid the use of the 'if' directive?<br><br>Thanks,<br clear="all"></div><div>
<font size="1"><span style="color:rgb(102,102,102)">---<br></span><b><span style="color:rgb(102,102,102)">B. R.</span></b><span style="color:rgb(102,102,102)"></span></font></div>
</div>
</blockquote></div><br></div></div>