No meu cenário de teste, se um arquivo estiver sendo criado e alguém solicitar o arquivo 404 será retornado. quero implementar uma nova tentativa uma vez para esse arquivo. Configuração atual
location /file/ {
root /var/www/html/;
try_files $uri $uri/ @retry;
}
location @retry {
proxy_pass http://127.0.0.1;
}
isso funciona bem para criação e acesso a arquivos em tempo real (se um arquivo retornar 404, ele tentará novamente). mas se um arquivo não existir, ele criará solicitações aninhadas (eu acho) que eventualmente retornarão o tempo limite do gateway 503.
1) existe alguma implementação melhor para isso?
2) a solicitação aninhada também morrerá quando a primeira solicitação expirar?
Responder1
Simplesmente duplique seu bloco de localização em vez de fazer proxy para localhost.
location /file/ {
root /var/www/html/;
try_files $uri $uri/ @retry;
}
location @retry {
root /var/www/html/;
try_files $uri $uri/ =404;
}
Mas considerando a rapidez com que o nginx processa uma solicitação, essa coisa de tentar novamente para um arquivo estático parece umarealmenteideia estranha. Em vez disso, você deve corrigir o que tem em mente em seu fluxo de trabalho.