Pergunta

I am running a website locally, all the traffic is routed through NGinx which then dispatches requests to PHP pages to Apache and serves static files. Works perfectly in Chrome, Safari, IE, etc.

However, whenever I open the website in Firefox I get the following error:

502 Bad Gateway
nginx/0.7.65

If I clear out cache and cookies, and then restart FireFox, I am able to load the site once or twice before the error returns. I've tried both Firefox 3.6 and 3.5 and both have the same problem.

Here is what my Nginx config looks like:

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

And here is the errors that Firefox generates in my error.log file:

[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

I am completely at a loss why a browser would cause a server error. Can someone help?

Foi útil?

Solução

I seem to have found a work around that fixed my problem. After some additional Google research, I added the following lines to my Nginx config:

proxy_buffers 8 16k;
proxy_buffer_size 32k;

However, I still don't know why this worked and why only Firefox seemed to have problems. If anyone can shed light on this, or offer a better solution, it would be much appreciated!

Outras dicas

If you have firePHP disable it. Big headers causes problems while nginx comunication with php.

Increasing the size of your proxy buffers solves this issue. Firefox allows large cookies (up to 4k each) that are attached to every request. The Nginx default config has small buffers (only 4k). If your traffic uses big cookies, you will see the error "upstream sent too big header while reading response header" in your nginx error log, and Nginx will return a http 502 error to the client. What happened is Nginx ran out of buffer space while parsing and processing the request.

To solve this, change your nginx.conf file

proxy_buffers 8 16k; proxy_buffer_size 32k;

-or-

fastcgi_buffers 8 16k; fastcgi_buffer_size 32k;

open /etc/nginx/nginx.conf and add the following lines into http section :

fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;

This fix worked for me in a CI web application. read more at http://www.adminsehow.com/2012/01/fix-nginx-502-bad-gateway-error/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top