Windows system >> Windowsの知識 >  >> コンピュータソフトウェアのチュートリアル >> サーバー技術 >> サーバーについて >> Apache Webサーバーのリソース使用制限の設定

Apache Webサーバーのリソース使用制限の設定

  
3.4.3 Apache Webサーバーのリソース使用制限の設定
<リソース使用制限は、Webサイトの特定のリソース(ディレクトリ、サーバーハードウェアなど)へのユーザーのアクセスを制限することです。関連する命令には、LimitRequestBody、LimitRequestFields、LimitRequestFieldSize、LimitRequestLine、RLimitCPU、RLimitMEM、RLimitNPROC、およびThreadStackSizeがあります。 LimitRequest *ファミリーのディレクティブは、Apacheがクライアントのリクエストを読む際に使うリソースの量を制限するために使われます。これらの値を制限することで、いくつかのサービス拒否(DOS)攻撃を軽減することができます; RLimit *命令ファミリーは、Apacheサブプロセスによって生成されるプロセスによって使用されるリソースの量を制限します。 ThreadStackSizeディレクティブは、スタックサイズを制御するために一部のプラットフォームで使用されます。 1 LimitRequestBody
LimitRequestBodyディレクティブは、クライアントから送信されるHTTPリクエストボディの最大バイト長を制限します。その構文は次のとおりです。LimitRequestBody Bytes。要求本体で許可されるバイト数を0(無制限)と2 147 483 647(2 GB)の間に制限します。デフォルトは "0"です。 LimitRequestBodyディレクティブを使用すると、クライアントがそのスコープ内(サーバー全体、特定のディレクトリ、特定のファイル、特定の場所)で送信できるHTTP要求本文の最大バイト長に制限を設定できます。クライアントの要求がこの制限を超えると、サーバーは要求を処理し続ける代わりにエラーで応答します。通常の要求の本体は、リソースの自然な特性とそのリソースによって許可されているメソッドに大きく依存します。 CGIスクリプトは多くの場合、メッセージ本文を使用してフォームに関する情報をサーバーに渡します。 PUTメソッドを使用すると、少なくとも、サーバーがこのリソースから取得すると予想される情報量のサイズに近い値を取得できます。 このディレクティブにより、サーバー管理者はクライアントの異常な要求動作をより細かく制御できます。これはある種のサービス妨害攻撃を回避するのに役立ちます。たとえば、ファイルを特定の場所にアップロードすることを許可し、アップロードしたファイルのサイズを100KBに設定する場合は、次のコマンドを使用できます。 LimitRequestBody 1024002。 LimitRequestFields
LimitRequestFieldsは、クライアントリクエストを受け付ける際のHTTPリクエストヘッダフィールドの数を制限するために使用されます。その構文は次のとおりです。LimitRequestFields Number、およびNumberは、0(無制限を意味する)から32 767までの整数です。デフォルトは "100"です。デフォルト値はコンパイル時定数DEFAULT_LIMIT_REQUEST_FIELDSです(リリース値は100です)。 LimitRequestFieldsディレクティブを使用すると、サーバー管理者はHTTP要求内の要求ヘッダーフィールド数の制限を変更できます。サーバーはこの値が通常のクライアント要求に含まれるヘッダーフィールドの数より大きいことを必要とします。クライアント要求ヘッダーフィールドの数が20を超えることはめったにありませんが、この数はクライアントによって大きく異なります。多くの場合、より詳細なコンテンツネゴシエーションをサポートするためにブラウザ拡張を設定するユーザーによって異なります。オプションのHTTP拡張は、リクエストヘッダフィールドを使って実装されることがよくあります。 ディレクティブを使用すると、サーバー管理者はクライアントの異常な要求動作をより細かく制御できます。これはある種のサービス妨害攻撃を回避するのに役立ちます。通常使用されているクライアントが、要求内のヘッダーフィールドが多すぎることを示すサーバーエラー応答を受け取った場合は、この値を適切に増やす必要があります。例: LimitRequestFields 50 3 LimitRequestFieldSize
LimitRequestFieldSizeディレクティブは、クライアントから送信されるリクエストヘッダのバイト数を制限するために使用されます。その構文は、次のとおりです。LimitRequestFieldsize Bytes、およびBytesは、HTTP要求ヘッダーで許可されるバイトのサイズを指定します。デフォルトは「8190」です。 LimitRequestFieldSizeディレクティブを使用すると、サーバー管理者はHTTP要求ヘッダーフィールドのサイズを増減できます。一般に、サーバーはこの値が、通常のクライアントからの要求のヘッダーフィールドサイズに対応するのに十分な大きさであることを必要とします。通常のヘッダフィールドのサイズは、クライアントによって大きく異なります。一般に、より多くのコンテンツプロトコルをサポートするようにブラウザを設定しているユーザと密接に関係しています。 ディレクティブを使用すると、サーバー管理者はクライアントの異常な要求動作をより細かく制御できます。これはある種のサービス妨害攻撃を回避するのに役立ちます。例: LimitRequestFieldSize 4094 通常、この設定は変更しないでください。既定の設定のままにしてください。 4 LimitRequestLine
LimitRequestLineディレクティブは、受信側クライアントによって送信されるHTTPリクエストラインのバイト数を制限するために使用されます。その構文は次のとおりです。LimitRequestLine Bytes、Bytesは、HTTP要求行のバイト数の制限を設定します。デフォルト値も「8190」です。 LimitRequestLineディレクティブを使用すると、サーバー管理者はクライアントのHTTP要求行の許容サイズ制限を増減できます。リクエスト行にはHTTPメソッド、URI、およびプロトコルバージョンが含まれているため、LimitRequestLineディレクティブはリクエストURIの長さを制限します。サーバーはこの値が、GETリクエストで渡される可能性があるクエリの一部に関するすべての情報を含む、すべてのリソース名をロードするのに十分な大きさである必要があります。 ディレクティブは、サーバー管理者にクライアントの異常な要求の振る舞いをより詳細に制御させます。これはある種のサービス妨害攻撃を回避するのに役立ちます。例: LimitRequestLine 4094 通常、この設定のデフォルト値を変更する必要はありません。 5 RLimitCPU
RLimitCPUコマンドは、Apache子プロセスがCPUを占有するために生成する最大秒数を制限するために使用されます。 CPUリソース制限は、プロセスごとの秒数として表されます。その構文は次のとおりです。 最大[秒| Max]は、オペレーティングシステムのデフォルトを使用して、デフォルト値は未定義です。 最初のパラメータはすべてのプロセスのソフトリソース制限を設定し、2番目のパラメータは最大リソース制限を設定します。両方のパラメータを値または "max"に設定して、その設定がオペレーティングシステムで許可されている最大値であることを示すことができます。このリソース制限の最大値を大きくするには、サーバーをrootとして、または初期設定起動ステートメントで実行する必要があります。 この制限は、Apache子プロセス自体ではなく、Apache子プロセスサービスの要求から派生したプロセスに適用されます。この範囲にはCGIスクリプトとSSI実行コマンドが含まれますが、Apacheの親プロセスから派生したすべてのプロセスは含まれません。たとえば、パイプラインログです。 6 RLimitMEM
RLimitMEMディレクティブは、Apacheの子プロセスによって生成されたプロセスが占有するメモリの最大バイト数を制限するために使用されます。メモリリソースの制限は、プロセスあたりのバイト数として表されます。その構文は次のとおりです。RLimitMEM 最大[バイト| また、オペレーティングシステムのデフォルトを使用して、デフォルト値を定義することもしません。最初のパラメータはすべてのプロセスのソフトリソース制限を設定し、2番目のパラメータは最大リソース制限を設定します。両方のパラメータを値または "max"に設定して、その設定がオペレーティングシステムで許可されている最大値であることを示すことができます。このリソース制限の最大値を大きくするには、サーバーをrootとして、または初期設定起動ステートメントで実行する必要があります。 この制限は、Apache子プロセス自体ではなく、Apache子プロセスサービスの要求から派生したプロセスに適用されます。この範囲にはCGIスクリプトとSSI実行コマンドが含まれますが、Apacheの親プロセスから派生したすべてのプロセスは含まれません。たとえば、パイプラインログです。 7 RLimitNPROC
RLimitNPROCディレクティブは、Apache子プロセスによって生成されたプロセスによって生成されたプロセスの数を制限するために使用されます。プロセス制限は、ユーザーごとのプロセス数を制御します。構文は次のとおりです。RLimitNPROC number | 最大数 また、オペレーティングシステムのデフォルトを使用して、デフォルト値を定義することもしません。最初のパラメータはすべてのプロセスのソフトリソース制限を設定し、2番目のパラメータは最大リソース制限を設定します。両方のパラメータを値または "max"に設定して、その設定がオペレーティングシステムで許可されている最大値であることを示すことができます。このリソース制限の最大値を増やすには、サーバーを管理者アカウントとして、または初期設定起動ステートメントで実行する必要があります。 この制限は、Apache子プロセス自体ではなく、Apache子プロセスサービスの要求から派生したプロセスに適用されます。この範囲にはCGIスクリプトとSSI実行コマンドが含まれますが、Apacheの親プロセスから派生したすべてのプロセスは含まれません。たとえば、パイプラインログです。 CGIプロセスがWebサーバーのUIDで起動されていない場合、このディレクティブはサーバー自体が作成できるプロセスの数を制限します。この状況はerror_logに "forkできない"として記録されます。 8。 ThreadStackSize
ThreadStackSizeディレクティブは、クライアントによって接続されたスレッドによって使用されるスタックサイズ(バイト)を処理するために使用されます。その構文は、ThreadStackSize sizeで、これはNetWareシステムではデフォルトの65 536で、他のシステムではオペレーティングシステムのデフォルトと同じです。 ThreadStackSizeディレクティブは、処理を支援するためのモジュールの呼び出しなど、クライアント接続を処理するスレッドに許可される最大スタックサイズ(バイト単位)を設定します。ほとんどの場合、オペレーティングシステムのデフォルトのスタックサイズは妥当ですが、場合によってはこの値を調整する必要があります。たとえば、デフォルトのスタックサイズが小さいプラットフォーム(HP-UXなど)では、より大きなスタックサイズを必要とするサードパーティ製モジュールを使用すると、Apacheがクラッシュすることがあります。このような問題は、ThreadStackSizeをより大きな値に設定することで解決できます。この調整は、サードパーティのモジュールプロバイダから明示的に要求された場合にのみ必要です。そうしないと、スタックスペースが小さすぎてクラッシュしないと判断されます。 プラットフォームによっては、デフォルトのスタックスペースがサーバーの実行に必要なスペースよりも大きい場合、ThreadStackSize値をオペレーティングシステムのデフォルト値よりも小さくすると、各プロセスで生成できる最大スレッド数を増やすことができます。この種の調整はテスト環境でのみ使用し、すべてのサーバープロセスを完全にテストする必要があります。これは、いくつかのまれな要求を処理するために大きなスタック領域が必要になるためです。サーバー構成を少し変更すると、現在のThreadStackSize設定が不適切になる可能性があります。zh-CN"],null,[1],zh-TW"]]]
Copyright © Windowsの知識 All Rights Reserved