I have the folllowing requirement:
if /usr/share/nginx/html/maintenance.html exists, then always show
this
file to browser.
if this is the static file which located in the sub-directories of
/usr/share/nginx/html/, then show this static file to browser.
if the URI begins with /testapp1/, then proxy to
http://127.0.0.1:8080 ;
else proxy to http://127.0.0.1:8081
And I tried the following two configurations but both failed:
Config1
server {
…
root /usr/share/nginx/html/;
location / {
try_files /maintenance.html $uri @proxy ;
}
location @proxy {
location /testapp/ {
proxy_pass http://127.0.0.1:8080 ;
}
location / {
proxy_pass http://127.0.0.1:8081
}
}
}
Config2
server {
…
root /usr/share/nginx/html/;
try_files /maintenance.html $uri @proxy ;
location /testapp/ {
proxy_pass http://127.0.0.1:8080 ;
}
location / {
proxy_pass http://127.0.0.1:8081
}
}
For Config1, it throws the following error:
nginx: [emerg] location “/testapp/” cannot be inside the named location
“@proxy ” in /etc/nginx/nginx.conf:41
For Config2, it does not work as expected: it seems that when try_files
is
together with location directives, try_file has the lowerest priority
and so
I can never get /maintenance.html shown.
So can anybody know how to config to meet my requirement ? Thanks in
advance!
Posted at Nginx Forum:
I have the folllowing requirement: 1. if /usr/share/nginx/html/maintenance.html exists, then always show this file to browser. 2. if this is the static file which located in the sub-directories of /usr/share/nginx/html/, then show this static file to...
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:
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.
if this is the static file which located in the sub-directories of
/usr/share/nginx/html/, then show this static file to browser.
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 D. [email protected]