Nginx Reverse-Proxy mit Fallback

Nginx Reverse-Proxy mit Fallback

Ist es möglich, Nginx so einzurichten, dass es als Reverse-Proxy für einen Server fungiert, aber wenn die Datei auf Server A nicht vorhanden ist, dann ein Fallback auf Server B erfolgt, wo die Datei definitiv sein wird?

Ich muss eine 2 TB S3-Migration durchführen und es würde den Vorgang vereinfachen, wenn Nginx auf diese Weise eingerichtet werden könnte.

Folgendes verwende ich derzeit als Reverse-Proxy-Konfiguration:

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;
        }

Antwort1

Nginx Plus verfügt über eine aktive Integritätsprüfungsfunktion. Sie können die beiden Server zu einer Upstream-Gruppe hinzufügen, eine aktive Integritätsprüfung in Bezug auf die URI für die Datei durchführen und wenn ein 404-Fehler zurückgegeben wird, markiert Nginx diesen Server als fehlerhaft und alle Anfragen werden an den anderen Server in der Gruppe weitergeleitet.

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

Dadurch wird jedoch Ihr gesamter Datenverkehr auf den anderen Server umgeleitet.

Wenn Sie die Kontrolle über den Upstream haben, können Sie auch Folgendes verwenden X-Accel:

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

Wenn die Datei im Upstream nicht vorhanden wäre, würde der Upstream den X-Accel-RedirectHeader zurückgeben, den der Reverse-Proxy lesen und die Datei vom anderen Server anfordern würde.

verwandte Informationen