504 ゲートウェイ タイムアウト エラーは、Nginx がサービスから十分な時間応答を受信できない場合に発生します。たとえば、PHP-FPM から。
Nginx と PHP-FPM
このエラーの最も一般的な原因は、Nginx と PHP-FPM の連携です。非常に遅い PHP スクリプトがある場合、Nginx は応答を 30 秒間待機しないと (デフォルトで) 504 ゲートウェイ タイムアウトを発生させます。
このエラーを解消するには、タイムアウトを増やしてみてください:
location ~ \.php$ { fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_read_timeout 300; }
プロキシ
Nginx をプロキシ サーバーとして使用すると、504 ゲートウェイのタイムアウトが発生する場合もあります。たとえば、Apache を使用する場合。問題を回避するには、プロキシのタイムアウト設定を構成する必要があります:
server { ... proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; ... }
設定を変更した後は、忘れずに Nginx を再起動してください:
# nginx -s reload
遅いスクリプトを取り除くことが強く推奨されることを理解することが重要です。負荷が増加すると、タイムアウト設定のあるソリューションが機能しなくなる可能性があります。