web-dev-qa-db-ja.com

フォールバックNGINXの場所

NGINXを初めて使用し、サーバーを移行しています。新しいサーバーですべてを完了していないので、そのリソースまたはパスが存在しない場合を除いて、新しいサーバーと一致させたいと思います。もしそうなら、私はそれを古いサーバーに送りたいです。それを行う方法はありますか?

8
dkimot

私はproxy_next_upstreamを使ったハックでこれを行いました

アップストリームを定義し、重みを制御してほとんどのリクエストをnew_serverに転送します。proxy_next_upstreamは失敗したリクエストを次のサーバー(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;
    }
}

===========

ソリューションII

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

    location @fallback {
        proxy_pass http://old_server;
    }
}
7
Larry.He