フォールバック付き nginx リバース プロキシ

フォールバック付き nginx リバース プロキシ

nginx をサーバーへのリバース プロキシとして設定し、ファイルがサーバー A に存在しない場合は、ファイルが確実に存在するサーバー B にフォールバックすることは可能ですか。

2TB の S3 移行を行う必要があり、nginx をこのように設定できればプロセスが簡素化されます。

現在リバース プロキシ設定として使用しているのは次のとおりです。

http {
    proxy_cache_path  /data/nginx/cache  levels=1:2    keys_zone=STATIC:100m
    inactive=30d  max_size=10g;
    server {
        location /image/ {
            proxy_pass             https://origin.example.com/;
            proxy_set_header    Host    origin.example.com;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_cache            STATIC;
            proxy_cache_valid      200  30d;
            proxy_cache_use_stale  error timeout invalid_header updating
            http_500 http_502 http_503 http_504;
        }

答え1

Nginx Plus にはアクティブ ヘルス チェック機能があります。2 つのサーバーをアップストリーム グループに追加し、ファイルの URI に関してアクティブ ヘルス チェックを適用し、404 エラーが返された場合、Nginx はそのサーバーを異常としてマークし、すべてのリクエストはグループ内の他のサーバーに送られます。

https://docs.nginx.com/nginx/admin-guide/load-balancer/http-health-check/#hc_active

ただし、その場合、すべてのトラフィックが他のサーバーに返送されます。

アップストリームを制御できる場合は、以下も使用できますX-Accel

https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/

アップストリームにファイルが存在しない場合、アップストリームはヘッダーを返しX-Accel-Redirect、リバース プロキシはそれを読み取り、他のサーバーにファイルを要求します。

関連情報