web-dev-qa-db-ja.com

504ゲートウェイタイムアウトエラーを修正するにはどうすればよいですか?

私はjqueryを使用して、APIからデータを取得しようとしています。ただし、504エラーが表示されます。 postmanを使用してデータをテストしている場合でも、これが発生します。誰も私がこれを回避するために必要なことを提案できますか?

11
Cathy Regan

何もありませんyoできます。

サーバーにリクエストを送信しています。サーバーがプロキシにリクエストを送信し、タイムアウトエラーが発生するため、この特定のリクエストは失敗します。サーバーはこれをステータス504として報告します。

修正する唯一の方法は、プロキシを修正する(タイムリーに応答する)か、そのプロキシに依存しないようにサーバーを変更することです。両方ともあなたの地域の外にあります。

このようなエラーを防ぐことはできません。あなたができることは、そのような問題が発生したときに、どのようなユーザーエクスペリエンスがあるべきかを見つけ、それを実装することです。ところで。 504エラーが発生した場合は、タイムアウトエラーも発生するはずです。 60秒のタイムアウトでリクエストをサーバーに送信し、サーバーが60秒のタイムアウトでプロキシにリクエストを送信するとします。両方のタイムアウトが同じであるため、サーバーがプロキシタイムアウトを受信して​​送信する場合がありますが(ステータス504)、サーバーへのリクエストがその直前にタイムアウトし、タイムアウトエラーが発生する場合があります。

5
gnasher729

私は最近、Firebase Databaseの野心的な呼び出しを行っていたアプリの1つでこの問題を経験しました-取得するのに60秒(デフォルトのタイムアウト)以上かかった非常に大きなレコードを取得していました。

このエラーが発生しているユーザーは、[〜#〜] nginx [〜#〜]を介してプロキシしているアプリ/サイトのホスティング環境にアクセスできます、この問題はAPIリクエストのタイムアウトを延長することで修正できます。

あなたの/etc/nginx/sites-available/defaultまたは/etc/nginx/nginx.conf次の変数を追加します。

proxy_connect_timeout       240;
proxy_send_timeout          240;
proxy_read_timeout          240;
send_timeout                240;

実行Sudo nginx -t構文をチェックしてから、Sudo service nginx restart

これにより、NGINXがAPIリクエストをタイムアウトするまでの時間が実質的に4倍になります(デフォルトは60秒、新しいタイムアウトは240秒です)。

詳細: Nginxを使用して504ゲートウェイのタイムアウトを修正する方法

お役に立てれば!

1
Allan of Sydney