Chyba časového limitu brány 504 nastane, když Nginx nemůže dostat odpověď od služby dostatečně dlouho. Například z PHP-FPM.
Nginx a PHP-FPM
Nejčastější příčinou této chyby je spolupráce Nginx a PHP-FPM. V případě, že existují velmi pomalé PHP skripty, Nginx poskytne bráně 504 časový limit, když nečeká na odpověď po dobu 30 sekund (ve výchozím nastavení).
Chcete-li se této chyby zbavit, zkuste zvýšit časový limit:
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; }
Proxy
Časový limit brány 504 může také nastat, když je Nginx používán jako proxy server. Například při práci s Apache. Abyste předešli problémům, musíte nakonfigurovat nastavení časového limitu pro proxy:
server { ... proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; ... }
Po změně nastavení nezapomeňte restartovat Nginx:
# nginx -s reload
Je důležité pochopit, že je velmi vhodné zbavit se pomalých skriptů. Řešení s nastavením časového limitu může přestat fungovat, když se zatížení zvýší.