proxy inverso nginx con respaldo

proxy inverso nginx con respaldo

¿Es posible configurar nginx para invertir el proxy a un servidor, pero si el archivo no existe en el servidor A, entonces tener un recurso alternativo al servidor B donde definitivamente estará el archivo?

Necesito hacer una migración de 2TB S3 y simplificaría el proceso si nginx pudiera configurarse de esta manera.

Esto es lo que estoy usando actualmente como configuración de proxy inverso:

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

Respuesta1

Nginx Plus tiene la capacidad Active Health Check. Puede agregar los 2 servidores a un grupo ascendente, aplicar una verificación de estado activa con respecto al URI del archivo y, si se devuelve un error 404, Nginx marcará ese servidor como en mal estado y todas las solicitudes fluirán al otro servidor. en el grupo.

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

Sin embargo, eso hará rebotar todo su tráfico al otro servidor.

Si tiene control del upstream, también puede usar X-Accel:

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

Si el archivo no existía en el flujo ascendente, el flujo ascendente devolvería el X-Accel-Redirectencabezado, que el proxy inverso leería y solicitaría el archivo al otro servidor.

información relacionada