2009-10-03 120 views
7

我們在Nginx上用php-fastcgi運行Drupal 5.x。 事情正常工作一段時間。突然之間,我們(用戶)正在運行502錯誤網關錯誤。 重啓PHP-cgi,nginx ..重啓機器等都沒有幫助。Drupal + Nginx + Php-cgi:502錯誤的網關錯誤

還有其他人遇到這種類型的問題?什麼是可能的嫌疑人?

+0

php-fastcgi的延長計數pm.max_children尺寸 – num8er 2016-08-02 15:05:08

回答

0

通常當我遇到這個時,它在PHP的某個地方是一個致命的錯誤。看看你的PHP-CGI日誌,看看它是否在那裏。在nginx日誌中應該有這樣的東西:104: Connection reset by peer。根據您的設置,這個(對不起,鏈接已死)可能會有所幫助,但如果您使用的是php-fpm則不會。

3

502錯誤通常是由於某些原因PHP嚇壞了。你應該做的第一件事是檢查你所有的日誌文件。這包括/ var/log /和nginx日誌中的系統資料。

如果您沒有做出任何近期更改並且問題剛剛開始發生,原因不明,則PHP可能內存不足。我知道它是什麼時候發生的一個Apache模塊,它會給出一個空白屏幕 - 如果在nginx和FastCGI接口下發生502錯誤,不會感到驚訝。通過將ini_set('memory_limit','256M')放入你的index.php並查看是否解決了這個問題,這很容易解決。

另外,你可以加載獨立的PHP文件,不涉及Drupal?把put <?php phpinfo(); ? >到一個名爲info.php的文件中,並嘗試點擊該文件並查看會發生什麼。

祝你好運!

0

如果問題纔剛剛開始......閱讀上面..如果服務器是新只安裝,試試這個命令來查看它是否在聽它的端口

netstat -lpn | grep ":9000" 

如果你當然可以有設置快cgi在不同的端口上工作,所以只需將該語句中的端口9000替換爲您正在查找的端口即可。如果沒有任何顯示,可能沒有任何內容正在偵聽該端口,並且您需要先解決該問題。

0

如果你有firePHP禁用它。 大頭文件導致問題,而nginx通信與PHP

10

今天我在CI項目上得到「502壞門戶」,深入挖掘問題後,我發現它是一個nginx fastcgi緩衝區的問題,這裏是如何解決它: 開放/etc/nginx/nginx.conf

添加下列行到HTTP部分:

fastcgi_buffers 8 16k; 
fastcgi_buffer_size 32k; 
+0

除了重新啓動這兩種服務之外,我們還增加了以下內容:nginx和php5-fpm。 \t fastcgi_connect_timeout 300; \t fastcgi_send_timeout 300; \t fastcgi_read_timeout 300; – zmonteca 2016-08-05 17:11:45

2

我得到這個錯誤,以及我最終禁用所有模塊(非核心),並啓用他們一個接一個地看到造成錯誤的原因。

下面是一個簡單的方法disable all non-core modules

0

增加您的內存限制,它將被修復。 ini_set('memory_limit','256M');

0

這是因爲您可能已升級到PHP 5。5,因此您現在正在使用可能已啓用兩次的操作碼緩存。這是檢查php.ini和opcache.ini。