nginx: sem upstream ao conectar-se ao upstream

15

502 erro de gateway incorreto exibido ao alternar entre páginas do site e algumas vezes na página inicial, mas não na primeira solicitação na página inicial, é somente quando outra página é redirecionada para ele. e isso acontece para alguns arquivos javascript

balanceamento de carga configurado em dois upstreams php1 php2 ambos são servidores apache.

Quando eu verifiquei o log de erros:

no live upstreams while connecting to upstream

[error] 27212#0: *314 no live upstreams while connecting to   upstream, client: ip_address , server: example.com, request: "GET / HTTP/1.1", upstream: "http://example.com", host: "example.com", referrer: "http://example.com/mypages/"

e esta é a configuração do servidor de balanceamento de carga

  upstream example.com  {
    #  ip_hash;
      server php01 max_fails=3 fail_timeout=15s;
      server php02 max_fails=3 fail_timeout=15s;
    }

    server {
      listen IP:80;
      server_name example.com;
      access_log /var/log/nginx/example.com.access;
      error_log /var/log/nginx/example.com.error error;

     location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass  http://$server_name/$uri;
        proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
        proxy_cache_bypass $http_pragma $http_authorization;
        proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
        proxy_no_cache $http_pragma $http_authorization;
      }

    }

Eu pesquisei por horas e nada de útil descobriu que meus streams estão funcionando e não há problemas com eles.

    
por Mohammad Jolani 02.04.2014 / 12:30

2 respostas

4

Isto não é um problema com o Nginx, é um problema com seus backends PHP não responderem a tempo. Você pode adicionar log ao Nginx para ajudar confirme isso .

Como segundo ponto de referência, você pode usar top no servidor e verificar manualmente se o PHP está batendo a CPU por períodos de tempo, outro indicador de respostas lentas.

Se respostas muito lentas do PHP estiverem bem com você, você pode pedir ao Nginx para esperar mais tempo antes de desistir:

 # Wait 5 minutes before giving up on the backend!
 proxy_read_timeout 5m; 

Ao examinar os logs com as informações de tempo ligadas acima, você deve ser capaz de descobrir quais solicitações são lentas para o PHP processar.

Para diminuir o problema, envie essas solicitações diretamente para o backend do PHP.

Dependendo do que está acontecendo, você também pode ativar o armazenamento em cache de algumas solicitações no Nginx, evitando algumas solicitações lentas.

    
por 25.01.2016 / 19:02
-3

Renomeie o envio para "up_example.com" e altere

proxy_pass  http://$server_name/$uri;

seja

proxy_pass  http://up_$server_name$uri;
    
por 11.02.2015 / 16:41