We have nginx setup as a reverse proxy and on one of the backend servers
we have a Sharepoint website that we want to failover to a Wordpress
website hosted on another server if there’s a problem with Sharepoint
website. I’ve googled and red through books etc but can’t we an example
for this. I think i need “try_files” and some type of error code
checking but havent been able to figure it out. Could someone advice ?
Below is the type of thing that I think I am after.
Thanks for looking.
Keith
upstream primaryserver { server 10.1.1.1:80; }
upstream secondaryserver { server 10.1.1.2:80; }
server
{
listen 80;
server_name _;
server_name_in_redirect off;
location /
{
try_files @sharepoint @wordpress ;
}
location @sharepoint
{
proxy_pass http://primaryserver ;
proxy_set_header Host $host;
proxy_connect_timeout 3;
proxy_next_upstream error timeout;
}
location @wordpress
{
proxy_pass http://secondaryserver ;
proxy_set_header Host $host;
proxy_connect_timeout 3;
proxy_next_upstream error timeout;
}
}
keith
October 11, 2011, 11:51am
2
On Tue, Oct 11, 2011 at 10:39:43AM +0100, keith wrote:
{
location @wordpress
{
proxy_pass http://secondaryserver ;
proxy_set_header Host $host;
proxy_connect_timeout 3;
proxy_next_upstream error timeout;
}
}
“try_files” tries files, but not proxied requests.
There are two way to fallback to backup servers:
upstream sharepoint {
server primaryserver;
server secondaryserver backup;
}
server {
location / {
proxy_pass http://sharepoint ;
proxy_set_header Host $host;
proxy_connect_timeout 3;
}
}
server {
location / {
proxy_pass http://primaryserver ;
proxy_set_header Host $host;
proxy_connect_timeout 3;
proxy_intercept_errors on;
error_page 502 504 @wordpress ;
}
location @wordpress {
proxy_pass http://secondaryserver;
proxy_set_header Host $host;
proxy_connect_timeout 3;
}
}
–
Igor S.
keith
October 11, 2011, 11:51am
3
Try files refers to local files so that wont work. You need a failover
in
the upstream.
keith
October 11, 2011, 3:26pm
4
On 11/10/2011 10:50, Igor S. wrote:
Keith
location /
There are two way to fallback to backup servers:
proxy_set_header Host $host;
proxy_intercept_errors on;
Cheers Igor, Option 2 seems to be working for us !! So thanks for the
quick answers. I think we just need to setup the correct error codes
now.
Below is the current configuration that seems to be working.
upstream primaryserver { server 10.0.0.xx:80; }
upstream secondaryserver { server 10.0.0.xx:80; }
server
{
listen 80;
server_name www.somewebsites.com ;
server_name_in_redirect off;
location /
{
proxy_pass http://primaryserver ;
proxy_set_header Host $host;
proxy_connect_timeout 3;
proxy_intercept_errors on;
error_page 400 403 502 504 @wordpress ;
}
location @wordpress
{
proxy_pass http://secondaryserver ;
proxy_set_header Host $host;
proxy_connect_timeout 3;
}
}