É possível configurar o nginx para reverter o proxy para um servidor, mas se o arquivo não existir no servidor A, haverá um retorno para o servidor B, onde o arquivo definitivamente estará.
Preciso fazer uma migração S3 de 2 TB e simplificaria o processo se o nginx pudesse ser configurado dessa forma.
Aqui está o que estou usando como configuração de proxy reverso atualmente:
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;
}
Responder1
Nginx Plus possui capacidade de verificação de integridade ativa. Você pode adicionar os 2 servidores a um grupo upstream, aplicar uma verificação de integridade ativa em relação ao URI do arquivo e, se um erro 404 for retornado, o Nginx marcará esse servidor como não íntegro e todas as solicitações fluirão para o outro servidor no grupo.
https://docs.nginx.com/nginx/admin-guide/load-balancer/http-health-check/#hc_active
No entanto, isso irá devolver todo o seu tráfego para o outro servidor.
Se você tiver controle do upstream, também poderá usar X-Accel
:
https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/
Se o arquivo não existisse no upstream, o upstream retornaria o X-Accel-Redirect
cabeçalho, que o proxy reverso leria, e solicitaria o arquivo do outro servidor.