nginx: nessun flusso in diretta durante la connessione a monte


15

502 errore gateway non valido visualizzato quando si passa da una pagina all'altra del sito e alcune volte sulla home page ma non per la prima richiesta sulla home page è solo quando un'altra pagina reindirizza ad essa. e succede per alcuni file javascript

bilanciamento del carico configurato su due flussi up php1 php2 entrambi sono server apache.

Quando ho controllato il registro degli errori mi sono appassionato:

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 questa è la configurazione del server di bilanciamento del carico

  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;
      }

    }

Ho cercato per ore e nulla di utile ha riscontrato che i miei stream sono attivi e senza problemi.


I tuoi server upstream (php01, php02) funzionano? Potresti telnet dalla macchina ngnix a loro?
neutrina,

Sono collegati.
Mohammad Jolani,

Hai verificato che i server upstream abbiano abbastanza processi in esecuzione per gestire il traffico? È necessario controllare i log del server upstream se rifiutano le richieste per qualche motivo.
Tero Kilkanen,

Ho fatto e nessun problema con qualsiasi registro degli errori a monte e nessun registro di accesso per le richieste del gateway non valide.
Mohammad Jolani,

Hai trovato una soluzione a questo problema?
flickerfly,

Risposte:


4

Questo non è un problema con Nginx, è un problema con i tuoi back-end PHP che non rispondono in tempo. È possibile aggiungere la registrazione a Nginx per confermare ciò .

Come secondo punto di riferimento, è possibile topsul server e verificare manualmente se PHP sta sbattendo la CPU per periodi di tempo, un altro indicatore di risposte lente.

Se le risposte molto lente di PHP ti vanno bene, puoi chiedere a Nginx di attendere più a lungo prima di rinunciare:

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

Esaminando i registri con le informazioni sui tempi collegate sopra, dovresti essere in grado di capire quali richieste sono lente per l'elaborazione di PHP.

Per limitare il problema, invia queste richieste direttamente al back-end di PHP.

A seconda di ciò che sta accadendo, potresti anche abilitare la memorizzazione nella cache di alcune richieste in Nginx, evitando alcune delle richieste lente.


0

Non so se è abbastanza lo stesso, ma quello che ha funzionato per me è stato aggiungere max_fails = 0 alla fine del nome del server

up_sms_url {server LOAD_BALANCER_DOMAIN_NAME: max_fails = 0; }


-3

Rinomina l'upstream in "up_example.com" e modifica

proxy_pass  http://$server_name/$uri;

essere

proxy_pass  http://up_$server_name$uri;

Sebbene non convenzionale, non vedo alcun problema tecnico con l'uso di $server_name. Se questo fosse il problema, penso che avrebbe problemi / tutto / il tempo, non solo a volte come riportato.
Mark Stosberg,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.