14

I’m new to NGINX and I am migrating a server. I haven’t finished everything on the new server, so I want it to match to the new server, unless that resource or path doesn’t exist. If so, I want to send it to the old server. Is there way to do that?

dkimot
  • 2,239
  • 4
  • 17
  • 25

1 Answers1

17

I did this by a hack with proxy_next_upstream

Define a upstream, forward most of reqeusts to new_server by controlling the weight, proxy_next_upstream will retry to forward the failed request to next server (old_server)

upstream backend {
    server new_server weight=10000;
    server old_server weight=1;
}

server {
    location / {
        proxy_pass http://backend;
        proxy_next_upstream error timeout http_404 http_500 http_502 http_503 http_504 non_idempotent;
    }
}

===========

Solution II

server {
    location / {
        proxy_pass http://new_server;
        error_page 404 500 502 503 504 = @fallback;
    }

    location @fallback {
        proxy_pass http://old_server;
    }
}
Larry.He
  • 604
  • 5
  • 16