Nginx

nginx + php5-fpm:資源暫時不可用

  • July 16, 2018

我有一個 nginx(在一個 Debian docker 容器中),它帶有一個 Symfony 應用程序的配置:

location ~ ^/api/(app|app_dev|config)\.php(/|$) {
   root /var/www/backend/web/;
   fastcgi_split_path_info ^/api/(.+\.php)(/.+)$;
   fastcgi_pass unix:/var/run/php5-fpm.sock;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
   fastcgi_param HTTPS off;
}

該位置被正確辨識,SCRIPT_FILENAME指向正確的文件。但是,我得到

recv() not ready (11: Resource temporarily unavailable)

每當我提出請求時,都在 nginx 調試日誌中。nginx 以504 Gateway Time-out.

有空閒的 fpm 工人在我殺死他們的那一刻被重新製作,因為它是一個池,所以對我來說似乎是正確的。我嘗試使用127.0.0.1:9000而不是套接字,但同樣的事情。這很可能不是負載或記憶體的問題,有足夠的 RAM 可用,我只發出一個請求,CPU 負載為 0.0。

如何使 FPM 與 nginx 一起工作?

我在您的配置片段中看到的明顯內容是雜散/字元:

   fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

請注意,在範例配置中,這是不存在的。

   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

指令/中還有一個雜散尾隨。root

   root /var/www/backend/web/;

我希望看到:

   root /var/www/backend/web;

使用您現有的配置,SCRIPT_FILENAME設置為,例如/var/www/backend/web///api/config.php. 這確實無關緊要,但是您可能遇到了確實很重要的情況。


如果這不能解決問題,請開始查看您的應用程式碼。

引用自:https://serverfault.com/questions/922133