Nginx 502 Bad Gateway error ONLY in Firefox

18,310

Solution 1

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!

Solution 2

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

Solution 3

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;

Share:
18,310
Joshmaker
Author by

Joshmaker

Updated on July 07, 2022

Comments

  • Joshmaker
    Joshmaker almost 2 years

    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?