How to combine try_files with multiple proxy destinations

Francis Daly francis at daoine.org
Thu Jan 9 21:45:02 UTC 2014


On Wed, Jan 08, 2014 at 04:22:40AM -0500, rrrrcccc wrote:

Hi there,

(This is all untested, so handle with care.)

> I have the folllowing requirement:
> 1. if /usr/share/nginx/html/maintenance.html exists, then always show this
> file to browser.

That is probably best done with an "if" and a "return 503" -- there are a
few approaches you can take, with their own advantages and disadvantages.

> 2. if this is the static file which located in the sub-directories of
> /usr/share/nginx/html/, then show this static file to browser.
> 3. if the URI begins with /testapp1/, then proxy to http://127.0.0.1:8080;
> else proxy to http://127.0.0.1:8081

You could use "error_page" for 404 here, following
http://ngnix.org/r/error_page.

But I'll suggest using try_files with a named location as fallback.

Either way, you'll probably want one prefix and one named location,
per set of urls.

Something like:

  location ^~ / {
    try_files $uri $uri/ @proxyslash;
  }
  location @proxyslash {
    proxy_pass http://127.0.0.1:8080;
  }
  location ^~ /testapp1/ {
    try_files $uri $uri/ @proxytestapp1;
  }
  location @proxytestapp1 {
    proxy_pass http://127.0.0.1:8081;
  }

	f
-- 
Francis Daly        francis at daoine.org



More information about the nginx mailing list