nginx で DDoS 攻撃を防ぐ方法
DDOS に対する防御は体系的なプロジェクトです。攻撃にはさまざまな種類があり、防御コストは高く、多くのボトルネックがあります。防御は受動的で無力です。 DDOS の特徴は、分散型で、帯域幅とサービス攻撃、つまり、レイヤ 4 トラフィック攻撃とレイヤ 7 アプリケーション攻撃をターゲットにすることです。対応する防御ボトルネックは、レイヤ 4 では帯域幅、レイヤ 7 ではアーキテクチャのスループットです。レイヤ 7 アプリケーション攻撃に対しては、防御するためのいくつかの設定を行うことができます。
例 フロントエンドは Nginx で、主に防御のために nginx の http_limit_conn モジュールと http_limit_req モジュールを使用します。 ngx_http_limit_conn_module は単一 IP の接続数を制限でき、ngx_http_limit_req_module は単一 IP の 1 秒あたりのリクエスト数を制限できます。接続とリクエストの数を制限することで、CC 攻撃を比較的効果的に防御できます。
設定方法は以下の通りです。
1秒あたりのリクエスト数を制限する
ngx_http_limit_req_moduleモジュールで単位時間を制限しますリーキーバケットの原則により、単位時間あたりのリクエスト数が制限を超えると、503 エラーが返されます。構成は 2 つの場所で設定する必要があります:
nginx.conf の http セクションでトリガー条件を定義します。複数の条件を指定できます
トリガー条件が満たされたときに nginx によって実行されるアクションを定義します。場所
例:
http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; //触发条件,所有访问ip 限制每秒10个请求 ... server { ... location ~ \.php$ { limit_req zone=one burst=5 nodelay; //执行的动作,通过zone名字对应 } } }
パラメータの説明:
$binary_remote_addr 二进制远程地址 zone=one:10m 定义zone名字叫one,并为这个zone分配10M内存,用来存储会话(二进制远程地址),1m内存可以保存16000会话 rate=10r/s; 限制频率为每秒10个请求 burst=5 允许超过频率限制的请求数不多于5个,假设1、2、3、4秒请求为每秒9个,那么第5秒内请求15个是允许的,反之,如果第一秒内请求15个,会将5个请求放到第二秒,第二秒内超过10的请求直接503,类似多秒内平均速率限制。 nodelay 超过的请求不被延迟处理,设置后15个请求在1秒内处理。
IP 接続数の制限
ngx_http_limit_conn_module の設定方法とパラメータは、http_limit_req モジュールと非常に似ていますが、パラメータが少なく、より単純です
http { limit_conn_zone $binary_remote_addr zone=addr:10m; //触发条件 ... server { ... location /download/ { limit_conn addr 1; // 限制同一时间内1个连接,超出的连接返回503 } } }
Nginx 関連の技術記事の詳細については、Nginx 使用法チュートリアル## をご覧ください。 # 学べるコラム!
以上がnginx で DDoS 攻撃を防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

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

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

Stock Market GPT
AIを活用した投資調査により賢明な意思決定を実現

人気の記事

ホットツール

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

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

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

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

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

1. PHP開発の質問と回答コミュニティにおけるLaravel MySQL VUE/Reactの組み合わせの最初の選択は、生態系の成熟度と高開発効率のため、Laravel MySQL Vue/Reactの組み合わせの最初の選択肢です。 2。高性能では、キャッシュ(REDIS)、データベース最適化、CDN、非同期キューへの依存が必要です。 3.入力フィルタリング、CSRF保護、HTTPS、パスワード暗号化、許可制御を使用してセキュリティを行う必要があります。 4。オプションの広告、メンバーのサブスクリプション、報酬、委員会、知識の支払い、その他のモデル、コアはコミュニティトーンとユーザーのニーズに合わせることです。

nginxが「ToomyopenFiles」エラーを経験する場合、通常、システムまたはプロセスがファイル記述子の制限に達したためです。ソリューションには、次のものが含まれます。1。Linuxシステムのソフト制限とハードリミットを増やし、nginxの関連パラメーターを設定するか、/etc/security/limits.confでユーザーを実行します。 2. NginxのWorker_Connections値を調整して、予想されるトラフィックに適応し、過負荷の構成を確認します。 3.システムレベルのファイル記述子の上限を増やし、file-max、edit /etc/sysctl.confを編集し、変更を適用します。 4. open_lの使用など、ログとリソースの使用を最適化し、不要なファイルハンドルの使用量を削減します

MAC環境の構築におけるHomebrewの中心的な役割は、ソフトウェアのインストールと管理を簡素化することです。 1. Homebrewは、依存関係を自動的に処理し、複雑な編集プロセスとインストールプロセスを簡単なコマンドにカプセル化します。 2。ソフトウェアのインストールの場所と構成の標準化を確保するために、統一されたソフトウェアパッケージエコシステムを提供します。 3.サービス管理機能を統合し、BrewServicesを介してサービスを簡単に開始および停止できます。 4.便利なソフトウェアのアップグレードとメンテナンス、およびシステムのセキュリティと機能を改善します。

NginxのHTTP/2またはHTTP/3のサポートを有効にするには、前提条件を満たし、正しく構成する必要があります。 HTTP/2には、NGINX1.9.5、OpenSSL1.0.2およびHTTPS環境が必要です。 add -with-http_v2_moduleモジュール構成中に、聞くステートメントをlisten443sslhttp2に変更します。サービスに過負荷。 HTTP/3はQUICに基づいており、コンピレーション中にboringsSlまたはopensSlquicブランチを導入し、UDPリスニングポートを構成するには、nginx-Quicなどのサードパーティモジュールが必要です。展開中の一般的な問題には、ALPNが有効化されていない、証明書の互換性、ファイアウォール制限、編集エラーが含まれます。優先度を使用することをお勧めします

PHP環境と生産の間の矛盾の問題を解決するために、コアはKubernetesのコンテナ化とオーケストレーション機能を使用して環境の一貫性を実現することです。特定の手順は次のとおりです。1。すべてのPHPバージョン、拡張機能、依存関係、Webサーバー構成を含む統一されたDockerイメージを構築して、開発と生産で同じ画像が使用されるようにします。 2. KubernetesのconfigMapとSecretを使用して、非感受性および敏感な構成を管理し、ボリュームマウントまたは環境可変噴射を介したさまざまな環境構成の柔軟な切り替えを実現します。 3.統一されたKubernetes展開定義ファイル(展開やサービスなど)を介してアプリケーションの動作の一貫性を確保し、バージョンコントロールに含める。 4。

1. PHP Eコマースバックエンドの主流のフレームワークには、Laravel(高速開発、強力な生態学)、Symfony(エンタープライズレベル、安定した構造)、YII(優れたパフォーマンス、標準化されたモジュールに適しています)が含まれます。 2。テクノロジースタックには、MySQL Redisキャッシュ、RabbitMQ/Kafkaメッセージキュー、NGINX PHP-FPM、およびフロントエンド分離を装備する必要があります。 3.高並行性アーキテクチャを階層化し、モジュラー、データベースの読み取りおよび書き込み分離/分散データベース、キャッシュとCDNで加速し、タスクの非同期処理、ロードバランスとセッションの共有、徐々にマイクロサービス、および監視とアラームシステムの確立を行う必要があります。 4.複数の収益化パスには、製品価格の差額またはプラットフォームコミッション、サイト広告、SaaSサブスクリプション、カスタマイズされた開発およびプラグインマーケット、API接続が含まれます

nginx構成では、ロケーションブロック内の @シンボルを使用して、指定された場所を定義します。これらは内部で使用されているエンドポイントであり、クライアントリクエストによって直接一致することはできません。通常、ERROR_PAGE、try_files、または書き換えディレクティブを介して呼び出されます。 1。命名場所は @で始まります。たとえば、location@notfoundは直接リクエストに応答するのではなく、他の構成部品からトリガーします。 2。カスタムエラー処理、内部ルーティング、バックエンドエージェントのバッキングによく使用されます。 3.たとえば、try_filesと組み合わせて、静的ファイルが存在しない場合は@backendに転送します。 4。メモには、直接アクセスされず、紛争の命名を避け、記述名を使用します。名前付きの場所には含まれます

NGINX構成を変更した後、最初に構文をテストしてからサービスをリロードする必要があります。 1. nginx-Tを使用して、構成ファイルの構文を確認します。プロンプト「Syntaxisok」と「testissuccessful」がプロンプトされた場合、それは正しいことを意味します。エラーがある場合、特定の問題行が表示されます。 2.構成ファイルのアクセス許可が高い場合、sudonginx-tを使用して実行する必要があります。 3.テストが実際にロードされていることを確認してください。 Nginx-T-C/path/to/your/nginx.confを介してパスを指定するか、メインプロセスでPS-EF | grepnginxを介して使用される構成ファイルを表示できます。 4。テストに合格したら、sudonginx-sreloadオーバーロードサービスを実行して、新しい構成を有効にします
