Nginx タイムアウト設定の詳細な説明

Nginx タイムアウト設定の詳細な説明

最近、プロジェクトで nginx を使用し、バックエンドで Java を使用しました。バックエンドで 1 つのリクエストを処理するのに 1 分以上かかり、リクエストのステータス コードが 504 ゲートウェイ タイムアウトであることがわかりました。

次のように、nginx のタイムアウト関連のすべての構成を理解します。

キープアライブタイムアウト

HTTP には KeepAlive モードがあり、リクエストの処理後に TCP 接続を開いたままにするように Web サーバーに指示します。クライアントから他のリクエストを受信した場合、サーバーは別の接続を確立せずに、この閉じられていない接続を使用します。

http キープアライブでは、Web ページのすべてのリクエストは HTTP (画像、CSS など) であり、HTTP リクエストを開くには、最初に TCP 接続を確立する必要があります。ページがリクエストごとに TCP 接続を開いたり閉じたりする必要がある場合、リソースの無駄になります。keepalive_timeout は、HTTP リクエストが完了したときに TCP 接続が維持される時間です。この時点で別の HTTP リクエストが来ると、TCP 接続が再利用されます。新しいリクエストがない場合、TCP 接続は閉じられます。

ユーザー nginx;
ワーカープロセス 1;
 
error_log /var/log/nginx/error.log 警告;
pid /var/run/nginx.pid;
 
 
イベント {
  ワーカー接続 1024;
}
 
 
http {
  /etc/nginx/mime.types を含めます。
  デフォルトタイプ アプリケーション/オクテットストリーム;
 
  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';
 
  access_log /var/log/nginx/access.log メイン;
 
  ファイル送信オン;
  tcp_nopush オン;
  tcp_nodelay オン;
 
 
  キープアライブタイムアウト65;
  クライアントの最大ボディサイズ 8192m;
 
  #gzip オン;
 
  /etc/nginx/conf.d/*.conf を #include します。
 
 
 
  サーバー{
 80 をリッスンします so_keepalive=30m::;
 listen 443 デフォルト ssl;
 
 ssl_certificate /etc/nginx/ssl/server.crt;
 ssl_certificate_key /etc/nginx/ssl/portalkey.key;
 #ssl_password_file /etc/nginx/ssl/ssl.pass;
 
 
    ssl_session_timeout 5分;
    ssl_プロトコル SSLv2 SSLv3 TLSv1;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers をオン;
 
 位置 / {
 proxy_request_buffering をオフ;
 プロキシパス http://127.0.0.1:8011/;
 プロキシ接続タイムアウト 180;
    プロキシ送信タイムアウト 180;
    プロキシ読み取りタイムアウト 180;
    送信タイムアウト 180;
 }
 場所 /test1_url/ {
 プロキシパス http://127.0.0.1:8008/;
 プロキシ接続タイムアウト 180;
    プロキシ送信タイムアウト 180;
    プロキシ読み取りタイムアウト 180;
    送信タイムアウト 180;
 }
 場所 /test2_url/ {
 プロキシパス http://127.0.0.1:3000/;
 プロキシ接続タイムアウト 180;
    プロキシ送信タイムアウト 180;
    プロキシ読み取りタイムアウト 180;
    送信タイムアウト 180;
 }
  }
}

# 設定セクション: http、デフォルト 75 秒

キープアライブタイムアウト60;

  • send_timeout: クライアントにデータを送信するタイムアウト。デフォルトでは 60 秒です。クライアントが 60 秒以内にバイトを受信しない場合、接続は閉じられます。
  • proxy_connect_timeout: nginxとアップストリームサーバー間の接続タイムアウト
  • proxy_read_timeout: nginx は上流サーバーからデータを受信するときにタイムアウトします。デフォルトでは 60 秒です。60 秒連続してバイトが受信されない場合は、接続が閉じられます。
  • proxy_send_timeout: nginx はアップストリーム サーバーにデータを送信します。デフォルトでは 60 秒です。60 秒連続してバイトが送信されない場合、接続は閉じられます。

so_タイムアウト:

ユーザーがサーバーとの TCP 接続を開くと --> この接続に長時間トラフィックがない (so_keepalive タイムアウト) --> サーバーはユーザーがまだ生きているかどうかを確認するためにプローブ パケットを送信します --> プローブ パケットに応答がない場合、TCP 接続は閉じられます

so_keepalive=オン|オフ|[keepidle]:[keepintvl]:[keepcnt]
so_keepalive=30分::10
  アイドル タイムアウト (TCP_KEEPIDLE) を 30 分に設定し、プローブ間隔 (TCP_KEEPINTVL) をシステムのデフォルトのままにして、プローブ数 (TCP_KEEPCNT) を 10 プローブに設定します。

上記の 3 つのパラメータのうち 1 つだけを使用できます。so_keepalive=on、so_keepalive=off、so_keepalive=30s:: (検出パケットを送信する前にデータ パケットがない状態で 30 秒間待機することを意味します) など、同時に使用することはできません。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginx タイムアウト設定の詳細な説明
  • 大きなファイルをアップロードする際のNginxタイムアウトの解決策
  • nginx タイムアウト設定の詳細な紹介
  • Nginxサーバーでタイムアウトを設定する方法の詳細な説明
  • Nginx タイムアウト keeplive_timeout 設定手順の詳細な説明

<<:  面接でよく聞かれる Vue 修飾子 13 個

>>:  MySql8.0以降のバージョンでROOTパスワードを正しく変更する方法

推薦する

JS の toFixed() メソッドの丸め精度の問題の詳細な説明

目次落とし穴充填方法何の穴ですか?要約する落とし穴最近、仕事で商品の割引価格を計算すると、いつも1セ...

ログインボックスのドラッグ効果を実現するためのJavascript

この記事では、ログインボックスのドラッグ効果を実現するためのJavascriptの具体的なコードを参...

js を使用してウォーターフォール効果を実現する

この記事の例では、滝の流れの効果を実現するためのjsの具体的なコードを参考までに共有しています。具体...

Linux の crontab タスク スケジューリングの簡単な分析

1. スケジュールタスクを作成する命令crontab -eは現在のユーザーの編集インターフェースに入...

Vue.jsはシンプルなタイマー機能を実装します

この記事では、参考までに、簡単なタイマー機能を実装するためのvue.jsの具体的なコードを紹介します...

ローカル yum ソースの設定、国内 yum ソースの設定、epel ソースの設定を行う Linux の手順

1. ローカルyumソースを設定する1. ISOイメージをマウントする マウント -o loop /...

MySQL インデックス失敗の原理

目次1. インデックス失敗の理由2. インデックスの秩序が崩れる状況を見てみましょう。 - インデッ...

Alibaba Cloud Centos7.X で外部にポートを開く方法

一言で言えば、大手メーカーからクラウド サーバーを購入する場合は、セキュリティ グループに移動して、...

Vue ファースト スクリーン パフォーマンス最適化コンポーネントの知識ポイントの概要

Vue ファースト スクリーン パフォーマンス最適化コンポーネントVue ファースト スクリーン パ...

Nginx で limit_req_zone を使用して同じ IP へのアクセスを制限する方法

Nginx は、ngx_http_limit_req_module モジュールの limit_req...

Dockerのオンラインおよびオフラインインストールと一般的なコマンド操作

1. テスト環境名前バージョンセント7.6ドッカー18.09.06 2. オンラインインストールここ...

MySql はデータを正常に挿入しますが、[Err] 1055 エラーが報告されます。解決策

1. 質問:最近、挿入操作を行っています。MySQLのバージョンは5.7です。挿入は成功しますが、エ...

ロンボク実装 JSR-269

序文導入Lombok は、Google Guava と同様に便利なツールであり、強くお勧めします。す...

2つのVirtualBox仮想ネットワークをブリッジするLinuxブリッジメソッドの手順

この記事は、この時期の「ピーターから奪ってポールに払う」という仕事のスタイルに対する私の不満から生ま...

JavaScriptのURLオブジェクトとは何かについて話しましょう

目次概要ハッシュプロパティホストプロパティホスト名属性Href属性起源のプロパティユーザー名とパスワ...