<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)"><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">

Try to understand what you are doing first.<br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div class="im">
One request is handled in one location.<br>
<br>
For this request, the one location that you want to be used is not the<br>
one that nginx actually uses.<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
         <div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">​1. ​</div>location / {<br>
         <div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">​2. ​</div>location ~ \.php$ {<br>
         <div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">​3. ​</div>location /phpmyadmin/ {<br>
         <div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">​4. ​</div>location ~ ^/phpmyadmin/(.*\.php)$ {<br>
</blockquote>
<br>
<br>
</div><div class="im"><a href="http://nginx.org/r/location" target="_blank">http://nginx.org/r/location</a><br>
<br>
A request for /phpmyadmin/index.php will be handled in the second location<br>
above, not the fourth.<br></div></blockquote></blockquote><div><br><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">​The docs say 'To find location matching a given request, nginx first checks
locations defined using the prefix strings (prefix locations).
Among them, the location with the longest matching
prefix is selected and remembered.
Then regular expressions are checked, in the order of their appearance
in the configuration file.
The search of regular expressions terminates on the first match,
and the corresponding configuration is used.
If no match with a regular expression is found then the
configuration of the prefix location remembered earlier is used.'<br><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">Thus, in your configuration, for a '/phpmyadmin/***.php' request, it does the following:<br>

</div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">* Start searching prefix location *<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">

1. location /<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">3. location /phpmyadmin/<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">

* End of prefix location search, longest prefix = 3. *<br><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">* Start searching regex expressions<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">

2. location ~\.php$ // First regex found, stop of search<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">*
 End of prefix location search, regex found is being used * // 
Otherwise, if no matching regex were to be found, a fallback to the 
longest prefix location found before would have applied<br><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">Your problem is that the location 4. is <b>never</b> used, because the regex being used is the first which matches. Your generic '\.php$' will catch'em all!<br>

</div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">​</div><br><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">​Francis provided 2 ways of fixing your problem:<br>

</div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">I. Re-arranging your config file so 'location /phpmyadmin/(.*\.php)$' is found <i><b>before</b></i> \.php$​<br></div></div></div><font size="1"><span style="color:rgb(102,102,102)"></span></font></div>

<div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 9, 2014 at 1:41 PM, nano <span dir="ltr"><<a href="mailto:nanotek@bsdbox.co" target="_blank">nanotek@bsdbox.co</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



Admittedly, I don't know *why* what I changed fixed the problem, but it did. I relocated the phpMyAdmin entries to above the "location /" block from beneath the "location /" block.<br>
<br><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">​* snip *<br></div>
<br>
The syntax is identical, just those two location blocks are in a different place. I would like to know why this works, but am just happy that it does. I look forward to better understanding this great program.</blockquote>

</div><font size="1"><span style="color:rgb(102,102,102)"><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">​<font size="1"><span style="color:rgb(102,102,102)"><div class="gmail_default" style="font-size:small;color:rgb(51,51,153);display:inline">

<div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">You did just that...<br><br>II. Use a smarter (and more scalable, in light of future adds to the nginx config)
 way, which is nesting the rules of 'location /phpmyadmin/(.*\.php)$' in
 a 'location ~\.php$' block embedded in a 'location ^~ /phpmyadmin/' block.<br><br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">Note the modification made to the prefix block for phpmyadmin. The docs say 'If the longest matching prefix location has the “<code>^~</code>” modifier
then regular expressions are not checked.'<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">This way, longest prefix will be 'location /phpmyadmin/' <i>but the generic 'location \.php$' <b>won't be used</b></i> since there will be no regex search.<br>

<br></div><div class="gmail_default" style="font-size:small;color:rgb(51,51,153)">Hope I helped,</div></div></span></font></div>---<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>