Proxy pass location inheritance
Maxim Dounin
mdounin at mdounin.ru
Fri Feb 14 12:19:50 UTC 2014
Hello!
On Thu, Feb 13, 2014 at 06:43:08PM +0000, Brian Hill wrote:
> Hello, we are using NGINX to serve a combination of local and
> proxied content coming from both an Apache server (mostly PHP
> content) and IIS 7.5 (a handful of third party .Net
> applications). The proxy is working properly for the pages
> themselves, but we wanted set up a separate location block for
> the "static" files (js, images, etc) to use different caching
> rules. In theory, each of the static file location blocks should
> be serving from the location specified in its parent location
> block, but instead ALL image requests are being routed to the
> root block.
[...]
> Three of the four conditions are working properly.
> A request for www.site.edu/index.php gets sent to 10.64.1.10:80/index.php
> A request for www.site.edu/image1.gif gets sent to 10.64.1.10:80/default.gif
> A request for www.site.edu/app1/default.aspx gets sent to 10.64.1.20:80/app1/default.aspx
>
> But the last condition is not working properly.
> A request for www.site.edu/app1/image2.gif should be sent to 10.64.1.20:80/app1/image2.gif.
> Instead, it's being routed to 10.64.1.10:80/app1/image2.gif, which is an invalid location.
>
> So it appears that the first server location block is catching
> ALL of the requests for the static files. Anyone have any idea
> what I'm doing wrong?
Simplified:
location / {
location ~ regex1 {
# regex inside /
}
}
location ~ regex2 {
# regex
}
The question is: where a request matching regex1 and regex2 will
be handled?
The answer is - in "location ~ regex1". Locations given by
regular expressions within a matching prefix location are tested
before other locations given by regular expressions.
--
Maxim Dounin
http://nginx.org/
More information about the nginx
mailing list