2010-09-13 22 views
7

Estoy ejecutando un sitio web localmente, todo el tráfico se enruta a través de NGinx que luego envía solicitudes a páginas PHP a Apache y sirve archivos estáticos. Funciona perfectamente en Chrome, Safari, Internet Explorer, etc.Nginx 502 Error de puerta de enlace malo SOLAMENTE en Firefox

Sin embargo, cada vez que abro la página web en Firefox me sale el siguiente error:

502 Bad Gateway 
nginx/0.7.65 

Si borro a cabo caché y las cookies, y luego reiniciar Firefox, Puedo cargar el sitio una o dos veces antes de que vuelva el error. He probado Firefox 3.6 y 3.5 y ambos tienen el mismo problema.

Esto es lo que se ve mi config Nginx como:

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

Y aquí es los errores que genera Firefox en mi archivo 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 

estoy completamente perdido por las que una navegador causaría un error del servidor. ¿Alguien puede ayudar?

Respuesta

11

Parece que he encontrado un trabajo que solucionó mi problema. Después de una investigación adicional de Google, he añadido las siguientes líneas a mi config Nginx:

proxy_buffers 8 16k; 
proxy_buffer_size 32k; 

Sin embargo, todavía no sé qué esto funcionó y por qué sólo Firefox parecía tener problemas. Si alguien puede arrojar luz sobre esto u ofrecer una mejor solución, ¡sería muy apreciado!

+2

Está utilizando FirePHP – noah

5

Si tiene FirePHP deshabilítelo. Los encabezados grandes causan problemas mientras que la comunicación nginx con php.

3

Al aumentar el tamaño de sus búferes proxy resuelve este problema. Firefox permite cookies grandes (de hasta 4k cada una) que se adjuntan a cada solicitud. La configuración predeterminada de Nginx tiene pequeños búferes (solo 4k). Si su tráfico utiliza cookies grandes, verá el error "encabezado enviado demasiado grande al leer el encabezado de respuesta" en su registro de errores nginx, y Nginx devolverá un error http 502 al cliente. Lo que sucedió es que Nginx se quedó sin espacio en el búfer mientras analizaba y procesaba la solicitud.

Para resolver esto, cambiar el archivo 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; 'hizo el truco para mí –

Cuestiones relacionadas