Tornou-se um comportamento padrão a partir da versão 1.9.13
Para alterá-lo manualmente, você pode usar:
proxy_next_upstream error timeout non_idempotent;
Estamos usando nginx para carregar solicitações de saldo para nosso aplicativo. Descobrimos que o nginx muda para um servidor upstream diferente quando as solicitações excedem o tempo (bom). No entanto, faz isso para solicitações PUT e POST que podem causar resultados indesejáveis (dados armazenados duas vezes). É possível configurar o nginx para tentar novamente as solicitações GET no tempo limite? Ou existe outra maneira de resolver o problema?
Nossa configuração é a seguinte:
upstream mash {
ip_hash;
server 127.0.0.1:8081;
server 192.168.0.11:8081;
}
server {
...
location / {
proxy_pass http://mash/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Tornou-se um comportamento padrão a partir da versão 1.9.13
Para alterá-lo manualmente, você pode usar:
proxy_next_upstream error timeout non_idempotent;
Eu sei que estou atrasado para o jogo, mas para mim este é o melhor resultado na busca por esse problema, então eu queria compartilhar minha solução.
Isso usa a diretiva (com um dos poucos casos de uso válidos ) combinados com o personalizado manipulador de erros :
upstream backend {
server backend1;
server backend2;
}
server {
server_name proxy;
location / {
error_page 598 = @retry;
error_page 599 = @no_retry;
if ($request_method = POST) {
return 599;
}
return 598;
}
location @retry {
proxy_pass http://backend;
}
location @no_retry {
proxy_pass http://backend;
proxy_next_upstream off;
}
}
Por favor, veja aqui o documento: proxy_next_upstream
Por favor, note que esta é uma essência não testada
use proxy_method
directive
consulte: link
Eu tenho o mesmo problema no meu servidor tomcat. Tempo limite do proxy quando ocorrer uma solicitação longa. Eu resolvi meu problema usando proxy_read_timeout. quando aumentar o tempo limite, então o meu pedido nunca expirará & não ocorreu nenhum problema. tempo limite padrão de 60s. referência
location / {
proxy_pass http://xxxxxxxxxx.com;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
proxy_connect_timeout 800;
proxy_send_timeout 800;
proxy_read_timeout 240;
}
Tags nginx reverse-proxy