Nginx 急ぎ購入 電流制限構成 実装分析

Nginx 急ぎ購入 電流制限構成 実装分析

ビジネス上のニーズにより、急ぎの購入が発生することが多いため、ロード バランシング フロント エンドでのエラーの流れを制限する必要があります。この記事は、CC の防止にも適用されます。

  limit_req_zone $server_name zone=sname:10m rate=1r/s; #サーバーへのアクセスを1秒あたり1回のみに制限します #limit_req_zone $binary_remote_addr zone=one:3m rate=1r/s; #IPを制限し、1秒あたり1回のアクセスのみに制限します #limit_req_zone $binary_remote_addr $uri zone=two:3m rate=1r/s; #パラメータなしでIPとパスを制限します
    #limit_req_zone $binary_remote_addr $request_uri zone=thre:3m rate=1r/s; #パラメータでIPとパスを制限する server {
    聞く 80;
    サーバー名 www.abc.com;
    位置 / {
        host/proxy.cnf をインクルードします。
        proxy_pass http://backend;
    }
    場所 /api/createOrder {
        limit_req zone=sname; #バーストなし、通常のリクエストは1つだけ limit_req_status 503; #返されるステータスコードを503に設定する
        #limit_req zone=sname burst=5 nodelay; #最大同時実行数は 5 で、リアルタイム処理には host/proxy.cnf が含まれます。
        proxy_pass http://backend;
        error_page 503 =200 /50x.html; #これは非常に重要です。エラーステータスコードを503に設定し、結果を200として返すことができます。
    }
    場所 = /50x.html {
        $http_user_agent の場合、"モバイル|android|iPhone|iphone|ios|iOS"){
            #default_type アプリケーション/json;
            return 200 '{"msg": "イベントは人気が高すぎます。後でもう一度お試しください!","data": {},"code": -1}'; #モバイル端末にエラーメッセージ表示を返すように設定します}
        root html; #PCの場合はHTMLページを返す}
    }

ポイント: 通常の状況では、現在の制限が設定されている場合、返されるステータス コードは 503 です。モバイル端末の場合、JSON データを返してもクライアントはそれを認識しません。このとき、error_page 403 =200 /50x.html; を通じてステータス コードを巧みに 200 に設定できます。

上記では ngx_limit_req_module のみを使用していますが、ngx_limit_conn_module モジュールも使用できます。

参考: https://gist.github.com/simlegate/75b18359316cc33d8e20

特に、コンサルティングサイトの一部がクローラーのターゲットになっている場合、サーバーがクローラーによって強制終了される可能性があります(これは小規模なウェブサイトの場合に当てはまります)
では何ができるでしょうか?変数を使って

# グローバル設定 limit_req_zone $spider zone=spider:60m rate=200r/m; # クローラーの実行を 1 分間に 200 回に制限します # サーバー内 limit_req zone=spider burst=5 nodelay;
$http_user_agent の場合、"スパイダー|ボット" になります {
  set $spider $http_user_agent; #変数を設定し、ここに入力すると速度を制限します}

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

以下もご興味があるかもしれません:
  • Nginxの現在の制限設定の詳細な説明
  • ネットワークセグメント内の IP アドレスに対する Nginx の接続制限設定の詳細な説明
  • Nginx の現在の制限と構成管理の実践記録

<<:  Vue はコンポーネント間の通信をどのように実装しますか?

>>:  MySQL テーブルを削除する際の I/O エラーの原因分析と解決方法

推薦する

Hadoop 2.x と 3.x の 22 ポイントの比較、Hadoop 3.x の 2.x に対する改善点

質問ガイド1. Hadoop 3.x はどのようにして障害を許容するのでしょうか? 2. Hadoo...

JavaScript キャンバスで 9 マスのグリッドカットの効果を実現

この記事では、9グリッドカット効果を実現するためのキャンバスの具体的なコードを紹介します。具体的な内...

MySQLのスリープ関数の特殊現象例の詳しい説明

序文MySQL のスリープ システム機能は、実用的な適用シナリオが少なく、通常は実験的なテストに使用...

Vue の計算プロパティの詳細な説明

目次補間式方法計算された要約する今日は、Vue の計算プロパティについてお話ししましょう。計算プロパ...

js の通常形式の日付と時刻に 0 を自動的に追加する 2 つのソリューション

目次背景解決策1アイデア:コード:解決策2アイデア:要約する参照する背景日付と時間をフォーマットする...

Eclipse と IDEA 用に Tomcat サーバーを構成する方法

tomcat サーバーの構成誰もが Web について学習するときに、自分のツール用に Tomcat ...

jQuery キャンバスは QR コード付きのポスターを生成します

この記事では、jQuery キャンバスを使用して QR コード付きのポスターを生成するための具体的な...

Zookeeper 不正アクセス テストの問題

目次序文Zookeeper サービスのオープンを検出情報を入手する接続テスト接続先修理計画参照する序...

W3C チュートリアル (14): W3C RDF および OWL アクティビティ

RDF と OWL は、2 つの重要なセマンティック ウェブ テクノロジーです。 RDF と OWL...

史上最もシンプルな MySQL データのバックアップと復元のチュートリアル (パート 1) (パート 35)

データのバックアップと復元に関する最初の記事を皆さんに共有します。具体的な内容は次のとおりです。基本...

Vueでアイコンをカスタマイズする手順

ant-design-vue は Ali iconfont icons の使用をカスタマイズします\...

nginx のロケーションで URI の傍受を実装する方法

例:場所のルートとエイリアスルートディレクティブは、ルートによって設定されたディレクトリに検索ルート...

Vueは動的ルーティングの詳細を実装します

目次1. フロントエンド制御1. router.js ファイル内 (router.js にそれぞれ静...

jsはユーザーのページ操作を記憶するためにクッキーを使用します

序文開発プロセスでは、ブラウザレベルでユーザーが実行した操作を記憶するなど、同様の要件に遭遇すること...

MySQL 5.7.17 winx64 無料インストールバージョン設定方法グラフィックチュートリアル

mysql5.7.17無料インストールバージョンのインストールに関する最近の経験1.ダウンロードして...