帶有後備功能的 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頭,反向代理將讀取該標頭,並向其他伺服器請求該文件。

相關內容