當 Nginx 發生 504 Gateway Time-out 時, 一般上原因是一些程式執行需時較長時間, 當執行時間超出 Nginx 的限制時, 便會出現 504 Gateway Time-out 問題, 如果排除了程式上的問題, 解決方法是將執行時限延長 (或者升級主機的硬體也可以)。
首先開啟 Nginx 的網站設定檔, Nginx 將網站設定檔都放在 /etc/nginx/ 目錄下, 下面以 www.phpini.com 為例:
# vi /etc/nginx/site-available/www.phpini.com.conf
在 “location ~ \.php$ {” 段落, 最後加入這行:
1 |
fastcgi_read_timeout 300s; |
然後開啟 /etc/php5/fpm/php.ini:
# vi /etc/php5/fpm/php.ini
找到以下一行:
#max_execution_time = 30
改成:
max_execution_time = 180
上面的 180 是秒數, 即 3 分鐘。設定完成後儲存檔案, 然後重新啟動 Nginx 及 PHP-FPM:
RHEL 7 / CentOS 7:
# systemctl restart nginx
# systemctl restart php-fpm.service
# systemctl restart php-fpm.service
RHEL 6 / CentOS 6:
# service nginx restart
# service php-fpm restart
# service php-fpm restart
Ubuntu:
# restart nginx
# restart php5-fpm
# restart php5-fpm
補充一下,PHP FPM 跟 NGINX 都要延長才有效~
http://goodjack.blogspot.com/2018/08/increase-php-fpm-script-execution-time-with-nginx.html