天天看點

nginx出現504 Gateway Time-out的問題解決

nginx出現504 Gateway Time-out的問題解決

出現該錯誤的原因:

是因為php頁面消耗的最大記憶體預設是為 8M (在PHP的ini件裡可以看到) ,如果檔案太大 或圖檔太大 在讀取的時候(造成網頁請求逾時,也就是浏覽網站網頁所發出的請求沒有反應或者未響應) 會發生上述錯誤。

1.若nginx采用的是php請求解析服務是ftp,檢查 /etc/php/fpm/php.ini參數

php預設上傳檔案大小是8M,在此我修改成100M,可自行适當修改(在此上傳100M以内的檔案扔報504,則走下一步)

Upload_max_filesize=100M
Post_max_size=100m
memory_limit=500m

           

重新開機fpm

/etc/init.d/php7.0-fpm restart
或
service php7.0-fpm restart
           
2.cd /etc/nginx/nginx.conf … 進去nginx配置檔案添加

PS:有時候緩存過小也會引起504,具體情況還需要根據Nginx的日志内容來分析

修改fastcgi的緩存大小如下:

http{

...
    client_max_body_size 500m;

    fastcgi_connect_timeout 3000;
    fastcgi_send_timeout 3000;
    fastcgi_read_timeout 3000;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
   server_names_hash_bucket_size 128;
    client_header_buffer_size 1
    large_client_header_buffers 4 256k;
    ...
}
           
3.還有php-fpm裡的配置檔案 /etc/php/7.0/fpm/pool.d -> 編輯www.conf

還有就是php-fpm.conf中max_children與request_terminate_timeout兩個重要參數的設定。這兩個參數的設定需要我們根據PHP程式情況及伺服器帶寬狀況綜合考慮并計算出合理準确的值

//在此我僅注釋了此行
;request_terminate_timeout = 0;
           

成功!

繼續閱讀