2010-09-13 215 views
7

我在本地運行一個網站,所有的流量都通過NGinx路由,然後將請求分發到PHP頁面到Apache並提供靜態文件。在Chrome,Safari瀏覽器,IE瀏覽器等完美作品Nginx 502錯誤的網關錯誤只在Firefox

但是,每當我在Firefox中打開網站,我收到以下錯誤:

502 Bad Gateway 
nginx/0.7.65 

如果我清除緩存和Cookie,然後重新啓動Firefox,我能夠在錯誤返回之前加載一次或兩次該網站。我試過Firefox 3.6和3.5,兩者都有同樣的問題。

這裏是我的Nginx的配置是什麼樣子:

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

這裏是Firefox的產生在我的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 

我完全不知所措爲什麼瀏覽器會導致服務器錯誤。有人可以幫忙嗎?

回答

11

我似乎找到了一個解決方案,解決了我的問題。其他一些谷歌的研究之後,我添加以下行到我的Nginx的配置:

proxy_buffers 8 16k; 
proxy_buffer_size 32k; 

不過,我仍然不知道爲什麼工作,爲什麼只有火狐似乎有問題。如果有人能夠闡明這一點,或者提供更好的解決方案,那將非常感謝!

+2

您正在使用FirePHP – noah 2011-11-22 19:46:39

5

如果你有firePHP禁用它。當nginx與php通信時,大標題會導致問題。

3

增加代理緩衝區的大小解決了這個問題。 Firefox允許附加到每個請求的大型cookie(每個最多4k)。 Nginx默認配置有小緩衝區(只有4k)。如果你的流量使用大的cookie,你會在你的nginx錯誤日誌中看到錯誤「上游發送了太大的頭文件,而讀取響應頭文件」,Nginx會向客戶端返回http 502錯誤。發生什麼事是Nginx在分析和處理請求時耗盡了緩衝區空間。

爲了解決這個問題,改變你的nginx.conf文件

proxy_buffers 8 16K; proxy_buffer_size 32k;

- 或 -

fastcgi_buffers 8 16k; fastcgi_buffer_size 32k;

+0

'fastcgi_buffers 8 16k; fastcgi_buffer_size 32k;'爲我做了詭計 – 2015-01-20 22:21:08