2010-09-13 20 views
7

Mam lokalną stronę internetową, cały ruch jest kierowany przez NGinx, który następnie odsyła żądania do stron PHP do Apache i obsługuje pliki statyczne. Działa idealnie w Chrome, Safari, IE itpNginx 502 Błąd Zła brama TYLKO w Firefoksie

Jednak ilekroć otwieram stronę w Firefoksie pojawia się następujący błąd:

502 Bad Gateway 
nginx/0.7.65 

Gdybym usunąć pamięć podręczną i pliki cookie, a następnie ponownie uruchomić Firefoksa, Mogę załadować witrynę raz lub dwa razy, zanim błąd się pojawi. Próbowałem zarówno Firefox 3.6 i 3.5 i oba mają ten sam problem.

Oto co mój Nginx config wygląda następująco:

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

A oto błędy, które generuje Firefox w moim pliku 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 

Jestem całkowicie na straty, dlaczego przeglądarka spowodowałaby błąd serwera. Czy ktoś może pomóc?

Odpowiedz

11

Wydaje mi się, że znalazłem pracę, która naprawiła mój problem. Po pewnym dodatkowych badań Google I dodaje następujące linie do mojego Nginx config:

proxy_buffers 8 16k; 
proxy_buffer_size 32k; 

Jednak ja nadal nie wiem dlaczegoto działało i dlaczego tylko Firefox zdawała się mieć problemy. Jeśli ktokolwiek może rzucić światło na to, lub zaoferować lepsze rozwiązanie, byłoby to bardzo cenne!

+2

Używasz FirePHP – noah

5

Jeśli masz firePHP, wyłącz go. Duże nagłówki powodują problemy podczas komunikacji nginx z php.

3

Zwiększenie rozmiaru buforów proxy rozwiązuje ten problem. Firefox pozwala na duże pliki cookie (do 4k każdy), które są dołączane do każdego żądania. Domyślna konfiguracja Nginx ma małe bufory (tylko 4k). Jeśli Twój ruch korzysta z dużych plików cookie, zobaczysz błąd "Upstream wysłał zbyt duży nagłówek podczas czytania nagłówka odpowiedzi" w dzienniku błędów nginx, a Nginx zwróci błąd HTTP 502 do klienta. Co się stało, Nginx zabrakło miejsca w buforze podczas analizowania i przetwarzania żądania.

Aby rozwiązać ten problem, należy zmienić plik nginx.conf

proxy_buffers 8 16K; proxy_buffer_size 32k;

LUB

fastcgi_buffers 8 16k; fastcgi_buffer_size 32k;

+0

'fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; 'zrobiłem dla mnie –

Powiązane problemy