2010-09-13 14 views
7

Sto eseguendo un sito Web localmente, tutto il traffico viene instradato tramite NGinx, che quindi invia richieste a pagine PHP in Apache e serve file statici. Funziona perfettamente in Chrome, Safari, IE, eccNginx 502 Errore di gateway errato SOLO in Firefox

Tuttavia, ogni volta che apro il sito web in Firefox ottengo il seguente errore:

502 Bad Gateway 
nginx/0.7.65 

Se posso ripulire la cache ei cookie, e poi riavviare Firefox, Sono in grado di caricare il sito una o due volte prima che l'errore ritorni. Ho provato sia Firefox 3.6 che 3.5 e entrambi hanno lo stesso problema.

Ecco qual è il mio config Nginx assomiglia:

worker_processes 2; 

events { 
    worker_connections 1024; 
} 


http { 

server { 
    listen  80; 
    server_name local.mysite.amc; 
    root   /Users/joshmaker/Sites/mysite; 

    error_log /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log; 

    location/{ 
     proxy_set_header Host $host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_pass http://local.mysite.amc:8080; 
    } 

    include /opt/local/etc/nginx/rewrite.txt; 
} 
server { 
    include /opt/local/etc/nginx/mime.types; 

    listen  80; 
    server_name local.static.mysite.amc; 
    root   /Users/joshmaker/Sites/mysite; 

    error_log /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log; 
} 
} 

Ed ecco gli errori che Firefox genera nel mio file error.log:

[error] 11013#0: *26 kevent() reported that connect() failed (61: Connection refused) while connecting to upstream  
[error] 11013#0: *30 upstream sent too big header while reading response header from upstream 
[error] 11013#0: *30 no live upstreams while connecting to upstream 

Sono completamente in perdita per cui un il browser potrebbe causare un errore del server. Qualcuno può aiutare?

risposta

11

Mi sembra di aver trovato un lavoro che ha risolto il problema. Dopo qualche ulteriore ricerca di Google, ho aggiunto le seguenti righe al mio config Nginx:

proxy_buffers 8 16k; 
proxy_buffer_size 32k; 

Tuttavia, ancora non so il motivo per cui questo ha funzionato e perché solo Firefox sembrava avere problemi. Se qualcuno può far luce su questo, o offrire una soluzione migliore, sarebbe molto apprezzato!

+2

Stai utilizzando FirePHP – noah

5

Se firePHP lo disabilita. Le grandi intestazioni causano problemi durante la comunicazione di nginx con php.

3

L'aumento delle dimensioni dei buffer proxy risolve questo problema. Firefox consente i cookie di grandi dimensioni (fino a 4k ciascuno) allegati a ogni richiesta. La configurazione di default di Nginx ha buffer piccoli (solo 4k). Se il tuo traffico utilizza grandi cookie, vedrai l'errore "upstream inviato un'intestazione troppo grande durante la lettura dell'intestazione di risposta" nel tuo log degli errori di nginx e Nginx restituirà un errore http 502 al client. Quello che è successo è che Nginx ha esaurito lo spazio del buffer durante l'analisi e l'elaborazione della richiesta.

Per risolvere questo, modificare il file nginx.conf

proxy_buffers 8 16k; proxy_buffer_size 32k;

-o--

fastcgi_buffers 8 16k; fastcgi_buffer_size 32k;

+0

'fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; 'ha fatto il trucco per me –

Problemi correlati