Nginx 制限リクエストレート構成を実装する方法
Nginx 制限リクエスト レート構成を実装する方法
Nginx は、構成を通じてリクエストを制限および制御できる高性能 Web サーバーです。実際のアプリケーションでは、サーバー リソースを保護するために、リクエスト レートを制限することが必要になることがよくあります。この記事では、Nginxでリクエストレート制限を実装する方法を紹介します。
1. HttpLimitReqModule モジュールを使用する
Nginx は、リクエスト レートを制限するために使用できる HttpLimitReqModule モジュールを提供します。構成を開始する前に、HttpLimitReqModule モジュールがインストールされていることを確認する必要があります。
- Nginx 構成ファイルの編集
Nginx 構成ファイル (通常は /etc/nginx/nginx.conf にあります) を開き、http セクションを見つけて、次の構成を追加します。 :
http { ... limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { ... } }
limit_req_zone は、制限された領域の名前とサイズを定義するために使用され、$binary_remote_addr は、クライアントの IP アドレスを制限されたキーワードとして使用することを示します。 zone=one:10m は、サイズが 10MB の one という名前の制限領域を使用することを意味します。 rate=1r/s は、リクエスト レートが 1 秒あたり 1 に制限されることを意味します。
- リクエスト制限の構成
リクエスト制限が必要な場合は、limit_req ディレクティブを追加してリクエスト レートを制限します。たとえば、リクエスト レートを 10 リクエスト/秒に制限するには、サーバー セグメントに次の設定を追加できます。
location / { limit_req zone=one burst=5; ... }
limit_req ディレクティブを使用してリクエスト制限を適用し、zone パラメータでリクエストの名前を指定します。使用される制限ゾーン、およびバースト パラメータで同時に指定される時間、処理された要求の数。上記の設定は、リクエスト数が 10/秒を超えると 503 エラーが返されることを示しています。
- Nginx 構成のリロード
構成が完了したら、Nginx 構成を再ロードして有効にする必要があります。次のコマンドを使用して構成を確認して再ロードできます:
$ nginx -t # 检查配置是否正确 $ nginx -s reload # 重新加载配置
2. ngx_http_limit_req_module モジュールを使用します
HttpLimitReqModule モジュールに加えて、ngx_http_limit_req_module モジュールを使用してリクエストを制限することもできますレート。このモジュールは、より柔軟な構成オプションを提供します。
- Nginx 構成ファイルの編集
Nginx 構成ファイルを開き、http セグメントを見つけて、次の構成を追加します:
http { ... limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { ... } }
この構成はHttpLimitReqModule モジュールと同様に、1 という名前の制限領域が定義されており、サイズは 10MB、要求レート制限は 1/秒です。
- リクエスト制限の構成
リクエスト制限が必要な場合は、limit_req ディレクティブを追加してリクエスト レートを制限します。たとえば、リクエスト レートを 10 リクエスト/秒に制限するには、サーバー セグメントに次の設定を追加できます。
location / { limit_req zone=one burst=5; ... }
limit_req ディレクティブを使用してリクエスト制限を適用し、zone パラメータでリクエストの名前を指定します。使用される制限ゾーン、およびバースト パラメータで同時に指定される時間、処理された要求の数。
- Nginx 構成のリロード
構成が完了したら、Nginx 構成を再ロードして有効にする必要があります。次のコマンドを使用して、構成を確認して再ロードできます。 。
$ nginx -t # 检查配置是否正确 $ nginx -s reload # 重新加载配置
3. lua スクリプトを使用してリクエスト制限を拡張する
Nginx は、lua スクリプトを使用してリクエスト制限を拡張することもサポートしています。カスタム Lua スクリプトを作成することにより、より柔軟で複雑なリクエスト制限戦略を実装できます。
- lua モジュールのインストール
まず、Nginx lua モジュールがインストールされていることを確認する必要があります。
- lua スクリプトの作成
Nginx 構成ファイルに次の構成を追加します:
http { ... lua_shared_dict limit_req_store 10m; server { ... location / { access_by_lua_block { local limit_req = require "resty.limit.req" local lim, err = limit_req.new("limit_req_store", 1, 1) if not lim then ngx.log(ngx.ERR, "failed to instantiate a resty.limit.req object: ", err) return ngx.exit(500) end local key = ngx.var.binary_remote_addr local delay, err = lim:incoming(key, true) if not delay then if err == "rejected" then return ngx.exit(503) end ngx.log(ngx.ERR, "failed to limit req: ", err) return ngx.exit(500) end if delay >= 0.001 then ngx.sleep(delay) end } ... } } }
この構成では、lua_shared_dict ディレクティブを使用して、limit_req_store Shared を定義します。メモリ領域、サイズは10MBです。
- Nginx 構成のリロード
構成が完了したら、Nginx 構成をリロードして有効にします。
4. 概要
この記事では、Nginx リクエスト レート制限を実装する 3 つの方法、つまり HttpLimitReqModule モジュール、ngx_http_limit_req_module モジュール、lua スクリプトを使用する方法を紹介します。適切な構成と制限ポリシーにより、サーバー リソースを効果的に保護し、悪意のあるリクエストによってサーバーに過剰な負荷がかかるのを防ぐことができます。実際のアプリケーションでは、特定のニーズに応じて、適切な方法を選択してリクエスト レートを制限できます。
以上がNginx 制限リクエストレート構成を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Tomcat サーバーが外部ネットワークにアクセスできるようにするには、以下を行う必要があります。 外部接続を許可するように Tomcat 構成ファイルを変更します。 Tomcat サーバー ポートへのアクセスを許可するファイアウォール ルールを追加します。 Tomcat サーバーのパブリック IP を指すドメイン名を指す DNS レコードを作成します。オプション: リバース プロキシを使用して、セキュリティとパフォーマンスを向上させます。オプション: セキュリティを強化するために HTTPS を設定します。

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

「nginx へようこそ!」エラーを解決するには、仮想ホスト構成を確認し、仮想ホストを有効にし、Nginx をリロードする必要があります。仮想ホスト構成ファイルが見つからない場合は、デフォルト ページを作成して Nginx をリロードすると、エラー メッセージが表示されます。が消え、ウェブサイトは通常のショーになります。

Node.js プロジェクトのサーバー デプロイメント手順: デプロイメント環境を準備します。サーバー アクセスの取得、Node.js のインストール、Git リポジトリのセットアップ。アプリケーションをビルドする: npm run build を使用して、デプロイ可能なコードと依存関係を生成します。コードをサーバーにアップロードします: Git またはファイル転送プロトコル経由。依存関係をインストールする: サーバーに SSH で接続し、npm install を使用してアプリケーションの依存関係をインストールします。アプリケーションを開始します。node Index.js などのコマンドを使用してアプリケーションを開始するか、pm2 などのプロセス マネージャーを使用します。リバース プロキシの構成 (オプション): Nginx や Apache などのリバース プロキシを使用して、トラフィックをアプリケーションにルーティングします。

HTML ファイルを URL に変換するには Web サーバーが必要です。これには次の手順が含まれます。 Web サーバーを取得します。 Webサーバーをセットアップします。 HTMLファイルをアップロードします。ドメイン名を作成します。リクエストをルーティングします。

Dockerfile で最も一般的に使用される命令は次のとおりです。 FROM: 新しいイメージを作成するか、新しいイメージを派生します。 RUN: コマンドを実行します (ソフトウェアのインストール、システムの構成) COPY: ローカル ファイルをイメージにコピーします。 ADD: COPY と同様に、自動的に解凍できます。 tar アーカイブまたは URL ファイルを取得します。 CMD: コンテナーの起動時にコマンドを指定します。 EXPOSE: コンテナーのリスニング ポートを宣言します (ただし、パブリックではありません) ENV: 環境変数を設定します。 VOLUME: ホスト ディレクトリまたは匿名ボリュームをマウントします。 WORKDIR: 作業ディレクトリをコンテナ ENTRYPOINT: コンテナ起動時に実行する内容を指定します。 実行可能ファイル (CMD に似ていますが、上書きできません)

はい、Node.js には外部からアクセスできます。次の方法を使用できます。 Cloud Functions を使用して関数をデプロイし、一般にアクセスできるようにします。 Express フレームワークを使用してルートを作成し、エンドポイントを定義します。 Nginx を使用して、Node.js アプリケーションへのリバース プロキシ リクエストを実行します。 Docker コンテナを使用して Node.js アプリケーションを実行し、ポート マッピングを通じて公開します。

PHP Web サイトを正常に展開して維持するには、次の手順を実行する必要があります。 Web サーバー (Apache や Nginx など) を選択する PHP をインストールする データベースを作成して PHP に接続する コードをサーバーにアップロードする ドメイン名と DNS を設定する Web サイトのメンテナンスを監視する手順には、PHP および Web サーバーの更新、Web サイトのバックアップ、エラー ログの監視、コンテンツの更新が含まれます。
