nginx 503 サービスが一時的に利用できない問題を解決する方法

nginx 503 サービスが一時的に利用できない問題を解決する方法

最近、ウェブサイトを更新すると、503 Service Temporarily Unavailable エラーが頻繁に発生します。うまくいくこともあります。最近、nginx.conf で単一 IP アドレスへのアクセス回数の制限 (limit_req_zone $binary_remote_addr zone=allips:20m rate=20r/s;) について考えました。この数を増やしてウェブサイトを更新すると、問題が解決しました。 (これも limit_req zone=allips burst=50 nodelay; を増やしました) 問題を確認するために、数値を繰り返し変更してみたところ、確かにここに問題があることがわかりました。この数値が小さすぎると問題が発生します。Fiddler を通じて、ページ上で参照される js、css、画像がすべて 1 つの接続としてカウントされるため、Web ページを更新する必要があることがわかります。したがって、1 回のページ更新でこの制限を超える可能性があり、この制限を超えると、「503 サービスは一時的に利用できません」というメッセージが表示されます。

nginx.confを添付する

#ユーザーnobody;
ワーカープロセス 1;
#ワーカー_rlimit_nofile 100000; 
#error_log ログ/error.log;
#error_log ログ/error.log 通知;
#error_log ログ/error.log 情報;
 
#pid ログ/nginx.pid;
 
イベント {
  ワーカー接続 1024;
}
 
http {
  mime.types を含めます。
  デフォルトタイプ アプリケーション/オクテットストリーム;
 
##キャッシュ##
 プロキシ接続タイムアウト 5;
 プロキシ読み取りタイムアウト 60;
 プロキシ送信タイムアウト 5;
 プロキシバッファサイズ 16k;
 プロキシバッファ 4 64k;
 proxy_busy_buffers_size 128k;
 proxy_temp_file_write_size 128k;
 proxy_temp_path /home/temp_dir;
 proxy_cache_path /usr/local/nginx/cache レベル=1:2 キーゾーン=cache_one:200m 非アクティブ=1d 最大サイズ=30g;
 ##終わり##
#IP あたりの 1 秒あたりのアクセス回数の制限 10 
limit_req_zone $binary_remote_addr ゾーン=allips:20m レート=20r/s;
 
  #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 ログ/access.log メイン;
 
  ファイル送信オン;
  #tcp_nopush オン;
 
  #キープアライブタイムアウト 0;
  キープアライブタイムアウト65;
 
  #gzip オン;
アップストリーム myweb80{
  ip_ハッシュ;
  サーバー 192.168.3.105:80;
  サーバー 192.168.3.103:80;
}
 
アップストリーム myweb8080{
  ip_ハッシュ;
  サーバー 192.168.3.222:10080;
  #サーバー 192.168.3.103:8080;
 } 
アップストリーム myweb10086{
  ip_ハッシュ;
  サーバー 192.168.3.102:10086;
  サーバー 192.168.3.108:10086;
 } 
アップストリーム myweb443{
  ip_ハッシュ;
  サーバー 192.168.3.105:443;
  サーバー 192.168.3.103:443;
 } 
 
  # IP、名前、ポートベースの設定を組み合わせた別の仮想ホスト
  #
  サーバー{
    聞く 80;
    218.17.158.2 を許可します。
127.0.0.0/24 を許可します。
192.168.0.0/16 を許可します。
58.251.130.1 を許可します。
183.239.167.3 を許可します。
61.145.164.1 を許可します。
すべてを否定する;
サーバー名 myweb.com;
    位置 / {
        プロキシパス http://myweb80;
proxy_set_header X-Real-IP $remote_addr;
limit_req ゾーン=allips バースト=50 ノードレイ;  
    }
  }
 
  サーバー{
    8080を聴く;
218.17.158.2 を許可します。
127.0.0.0/24 を許可します。
192.168.0.0/16 を許可します。
58.251.130.1 を許可します。
183.239.167.3 を許可します。
61.145.164.1 を許可します。
すべてを否定する;
    位置 / {
        プロキシパス http://myweb8080;
proxy_set_header X-Real-IP $remote_addr;
limit_req ゾーン=allips バースト=50 ノードレイ;  
    }
  }
 
# HTTPS サーバー
  #
  サーバー{
    10086 ssl を聴く;
    server_name ローカルホスト;
218.17.158.2 を許可します。
127.0.0.0/24 を許可します。
192.168.0.0/16 を許可します。
58.251.130.1 を許可します。
183.239.167.3 を許可します。
61.145.164.1 を許可します。
#すべて拒否;
    ssl_証明書 ssl/1_www.myweb.com_bundle.crt;
    ssl_certificate_key ssl/2_www.myweb.com.key;
 
  # ssl_session_cache 共有:SSL:1m;
  #ssl_session_timeout 5分;
 
  # ssl_ciphers HIGH:!aNULL:!MD5;
  # ssl_prefer_server_ciphers オン;
 
    位置 / { 
   プロキシパス https://myweb10086; 
   #ロフトhtml; 
   #インデックス index.html index.htm; 
    } 
  }
 
  サーバ{ 
    443 ssl を聴く; 
    server_name ローカルホスト;
 
    ssl_certificate ssl/1_www.myweb.com_bundle.crt; 
    ssl_certificate_key ssl/2_www.myweb.com.key;
 
  #ssl_session_cache 共有:ssl:1m; 
  #ssl_session_timeout 5分;
 
  #ssl_ciphers 高: ! aNULL:! MD5; 
  #ssl_prefer_server_ciphers オン;
 
    位置 / { 
   プロキシパス https://myweb443; 
   #ロフトhtml; 
   #ロフトhtml; 
   #インデックス index.html index.htm; 
    } 
  } 
}

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

以下もご興味があるかもしれません:
  • TeamCenter12 にログインする際の 404/503 問題の解決方法
  • SVN エラー: 変更の更新エラー: svn: E155037 解決策
  • Windows に Node.js をインストールするときに発生するエラー 2503 および 2502 を解決する方法
  • Apache で Python プログラムをデプロイする際の 503 エラーの解決方法
  • サーバー共通エラーコード 500、501、502、503、504、505 を解析しています
  • サーバーエラーコード 500 501 502 503 504 505 詳細な説明
  • 503 サービスは一時的に利用できませんというエラーとは何ですか?
  • 503 サービス利用不可エラーの解決方法の説明

<<:  Vue バッチ更新 DOM 実装手順

>>:  Windows 環境での MYSQL5.7 設定ファイルの場所のグラフィカル分析

推薦する

Apache をインストールした後、サービスを開始できません (サービスを開始するとエラー コード 1 が表示されます)

目次1. エラーメッセージ2. エラーの原因3. 解決策1. エラーメッセージ1. インストール後、...

MySQLはconnect_by_isleaf MySQLメソッドまたはストアドプロシージャに似た機能を実装します

最近、特に異常なビジネス需要があり、テーブルがあります テーブル「デモ」を作成します( `id` i...

JDBC 接続 (MySQL への接続) の 6 ステップのサンプル コード

JDBC の 6 つのステップ: 1. ドライバーを登録する2. データベース接続を取得する3. デ...

MySql 8.0.16 バージョンのインストールでは、「UTF8B3」ではなく「UTF8B4」が使用されるように求められます。

MySQL 8.0.16 にインストールする場合、「UTF8B3」ではなく「UTF8B4」が使用さ...

JSインターセプト文字列の3つの方法の詳細な説明

JS には、文字列をインターセプトするための 3 つのメソッド、 slice() 、 substri...

ウェブのさまざまなフロントエンド印刷方法: CSS はウェブページの印刷スタイルを制御します

CSS は Web ページの印刷スタイルを制御します。 CSS を使用して印刷スタイルを制御します。...

Linuxでファイルの作成時間を表示する方法

1. はじめにLinux でファイルの作成時刻が見つかるかどうかは、ファイル システムの種類によって...

MacOS での MySQL 8.0.18 のインストールと設定方法のグラフィック チュートリアル

この記事では、MacOSでのMySQL 8.0.18のインストールと成功したコマンドライン操作を記録...

JavaScript でクールなマウス テーリング効果を実装

これを見た後、あなたにも手ができて、さまざまな美しい小さなしっぽを作れるようになることを保証します!...

MySQL の厄介な Aborted 警告をケーススタディで分析する

この記事では主に、MySQL の Aborted アラームに関する関連コンテンツを紹介し、参考と学習...

CentOS8 yum/dnfで国内ソースを設定する方法

CentOS 8 ではソフトウェア パッケージのインストール プログラムが変更され、yum 構成方法...

Docker を使用して Spring Boot をデプロイする方法の例

ここでは主に、スタンドアロンのプログラムを生成できるspring-bootと、Mavenプラグインd...

Docker のタイムゾーンの問題とデータ移行の問題

最新のソリューション: -v /usr/share/zoneinfo/Asia/Shanghai:/...

Windows 64 ビットでの MySQL 8.0.13 のインストールと設定方法のグラフィック チュートリアル

この記事では、MySQL 8.0.13のインストールと設定のチュートリアルを参考までに紹介します。具...