Come far riscrivere HAProxy su un back-end diverso quando il primo manca il file? Ciò di cui ho bisogno è errorloc
fare una riscrittura invece del reindirizzamento, quindi il client non è a conoscenza del reindirizzamento.
Abbiamo sviluppato un'applicazione pensando a NginX, che era sia il proxy inverso di bilanciamento del carico sia il server Web per i file statici. L'applicazione si basa sul framework Opa che richiede sessioni permanenti basate su cookie, supportate sia da NginX che da HAproxy. La funzionalità dell'applicazione con cui abbiamo problemi è la generazione dinamica di contenuti. Genera immagini su richiesta, ma dopo la generazione viene salvato su disco ed è possibile accedervi staticamente con percorso deterministico.
Il problema è stato facilmente risolto con NginX: tenta di leggere il file locale e di utilizzare il back-end con bilanciamento del carico solo se il file è mancante (non ancora generato):
server {
server_name wkaliszu.pl;
location /thumb {
root /path_on_disk/to_cached_content;
expires 7d;
# try to access already generated content
try_files $uri @wkaliszu;
}
location / {
# reverse proxy to the application
[...]
}
location @wkaliszu {
# reverse proxy to the application
[...]
}
}
Il server è stato migrato e ora utilizza HAPproxy per il bilanciamento del carico, che non è un server Web e non supporta questa funzionalità. Ora la generazione dinamica del software viene eseguita ogni volta che il client tenta di accedere alla risorsa, ciò che è molto più lento e spreca risorse. Andrebbe bene se potesse utilizzare il back-end successivo se il primo (semplice server Web di memorizzazione nella cache per file statici) non fosse riuscito con errore 404, ma non riesco a trovare un modo per farlo in modo semplice. /thumb
Mi viene in mente il reindirizzamento a NginX, che tenta di leggere il file statico e riscrive nuovamente su HAproxy con la nuova intestazione HTTP, ma vorrei trovare qualcosa di meglio.