検索
ホームページ運用・保守NginxNginx HTTP リクエスト フィルタリングとリバース プロキシ パフォーマンス分析

Nginx HTTP リクエスト フィルタリングとリバース プロキシ パフォーマンス分析

Nginx は、業界で広く使用されている HTTP サーバーおよびリバース プロキシ サーバーであり、そのシンプルな設計、優れたパフォーマンス、その他の利点により、大規模なサーバーとなっています。 Web アプリケーションの数、クラウド システムおよびモバイル アプリケーションの優先サーバー。実際のアプリケーションでは、Nginx は HTTP リクエストの処理と応答を担当するだけでなく、HTTP リクエストのフィルタリングやリバース プロキシも実行します。この記事では、Nginx の HTTP リクエスト フィルタリングとリバース プロキシの実装を分析し、パフォーマンス テストと分析を実行します。

  1. HTTP リクエスト フィルタリングの実装

Nginx は、正規表現に基づいた HTTP リクエスト フィルタリング モジュールを提供します。これは、修飾された HTTP リクエストをインターセプトして、悪意のあるリクエストのフィルタリングや保護を防ぐことができます。指定されたリソースの。次のコードを Nginx 構成ファイルに追加して、HTTP リクエスト フィルタリングを有効にします。

http {
    server {
        location / {
            if ($http_user_agent ~* Firefox) {
                return 403;
            }
            ...
        }
    }
}

上記のコードでは、$http_user_agent は Nginx の組み込み変数であり、HTTP リクエスト ヘッダーの User-Agent フィールドを表します。 、~* は正規表現を表し、Firefox の文字列が一致した場合は 403 エラーが返されます。このようにして、1 つ以上のタイプのリクエストをフィルタリングできます。

Nginx の HTTP リクエスト フィルタリング モジュールは、HTTP リクエストの複雑なフィルタリングを実装するために使用できる $http_referer、$request_method、$remote_addr などの他のタイプの変数や命令も提供します。ドキュメントの理解が深まります。

  1. リバース プロキシの実装

Nginx のリバース プロキシ機能は、クライアント リクエスト プロキシをバックエンド アプリケーション サーバーに転送し、さらにバックエンド アプリケーション サーバーに転送できます。 Nginx は負荷分散を実現し、パフォーマンスを向上させるために結果をクライアントに返します。

次は、単純なリバース プロキシ構成です:

http {
    upstream myapp {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://myapp;
        }
    }
}

上記の構成では、myapp という名前のアップストリームを定義し、それぞれ 8080 とポート 8081 をリッスンする 2 つのバックエンド サーバーを指定しました。サーバー ブロックでは、ポート 80 をリッスンし、location / を設定し、proxy_pass ディレクティブを通じてリクエストを myapp に転送します。myapp プロキシはそれをバックエンド サーバーに転送します。

Nginx のリバース プロキシは、負荷分散アルゴリズム、エラー処理、セッション固定性などの高度な戦略も提供します。読者は関連ドキュメントを参照して詳細を学ぶことができます。

  1. パフォーマンス テストと分析

上記の分析を通じて、Nginx の HTTP リクエスト フィルタリングとリバース プロキシ機能が非常に強力であることがわかりますが、実際のアプリケーションではまだ機能が不十分です。その性能に注目する必要がある。 Nginx のパフォーマンスをテストするために、テスト用の ApacheBench (ab) ツールを使用し、Ubuntu 20.04 サーバーで実験を実施しました。

最初は HTTP リクエスト フィルタリングのテストです。リクエスト ヘッダーの User-Agent フィールドを「Mozilla/5.0」に設定し、1000 リクエストを Nginx サーバーに送信します。結果 Nginx が 1 秒あたり 22.33 リクエストを処理でき、各リクエストの平均時間は 44.76 ミリ秒で、リクエストの 90% が 54 ミリ秒以内に完了することがわかります。

ab -n 1000 -H "User-Agent: Mozilla/5.0" http://localhost/

次は、リバース プロキシ テストです。実際のアプリケーションをシミュレートするために、単純なバックエンド サーバーが使用されます。各リクエストの処理時間は 10 ミリ秒で、リクエストは同時に 2 つのバックエンド サーバーに開始されます:

Concurrency Level:      1
Time taken for tests:   44.780 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      159000 bytes
HTML transferred:       0 bytes
Requests per second:    22.33 [#/sec] (mean)
Time per request:       44.780 [ms] (mean)
Time per request:       44.780 [ms] (mean, across all concurrent requests)
Transfer rate:          3.47 [Kbytes/sec] received
http {
    upstream myapp {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://myapp;
        }
    }
}

テスト結果は、Nginx が 1 秒あたり 966.41 リクエストを処理できることを示しています、およびそれぞれ リクエストの平均時間は 1.03 ミリ秒で、リクエストの 90% は 2 ミリ秒以内に完了します:

ab -n 1000 http://localhost/

テスト結果から、Nginx がインターセプトおよび転送する非常に強力な能力を備えていることがわかります。 HTTP リクエストを処理し、大量のリクエストを処理し、高いパフォーマンスを維持できます。ただし、Nginx のパフォーマンスは、サーバーのハードウェア能力、オペレーティング システムのパラメーター、Nginx の構成などの要因によっても制限されるため、実際のアプリケーションでは、実際の条件に応じて調整および最適化する必要があります。

結論

この記事では、Nginx の HTTP リクエスト フィルタリングとリバース プロキシ機能を分析し、その実装とパフォーマンスを紹介し、簡単なテストと分析を行います。一般的に使用される HTTP サーバーおよびリバース プロキシ サーバーとして、Nginx は強力な Web サービス機能を提供します。読者は、実際のニーズや環境に応じてさまざまな Nginx モジュールとパラメーターを選択および構成して、最高のパフォーマンスと効果を実現できます。

以上がNginx HTTP リクエスト フィルタリングとリバース プロキシ パフォーマンス分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
nginxとapacheを選択する:あなたのニーズに合った適切nginxとapacheを選択する:あなたのニーズに合った適切Apr 15, 2025 am 12:04 AM

NginxとApacheには独自の利点と短所があり、さまざまなシナリオに適しています。 1.Nginxは、高い並行性と低リソース消費シナリオに適しています。 2。Apacheは、複雑な構成とリッチモジュールが必要なシナリオに適しています。コア機能、パフォーマンスの違い、ベストプラクティスを比較することで、ニーズに最適なサーバーソフトウェアを選択するのに役立ちます。

nginxを開始する方法nginxを開始する方法Apr 14, 2025 pm 01:06 PM

質問:nginxを開始する方法は?回答:nginxスタートアップnginx検証nginxはnginxを開始しました他のスタートアップオプションを自動的に開始

Nginxが開始されるかどうかを確認する方法Nginxが開始されるかどうかを確認する方法Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

nginxを閉じる方法nginxを閉じる方法Apr 14, 2025 pm 01:00 PM

NGINXサービスをシャットダウンするには、次の手順に従ってください。インストールタイプを決定します:Red Hat/Centos(SystemCtl Status Nginx)またはDebian/Ubuntu(Service Nginx Status)サービスを停止します:Red Hat/Centos(SystemCtl Stop Nginx)またはDebian/Ubuntu(Service Nginx Stop)無効自動起動(オプション):Debuntos/Centos/Centos/Centos/Centos/Centos (syst

Windowsでnginxを構成する方法Windowsでnginxを構成する方法Apr 14, 2025 pm 12:57 PM

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

nginx403エラーを解く方法nginx403エラーを解く方法Apr 14, 2025 pm 12:54 PM

サーバーには、要求されたリソースにアクセスする許可がなく、NGINX 403エラーが発生します。ソリューションには以下が含まれます。ファイル許可を確認します。 .htaccess構成を確認してください。 nginx構成を確認してください。 SELINUXアクセス許可を構成します。ファイアウォールルールを確認してください。ブラウザの問題、サーバーの障害、その他の可能なエラーなど、他の原因をトラブルシューティングします。

Linuxでnginxを開始する方法Linuxでnginxを開始する方法Apr 14, 2025 pm 12:51 PM

Linuxでnginxを開始する手順:nginxがインストールされているかどうかを確認します。 systemctlを使用して、nginxを開始してnginxサービスを開始します。 SystemCTLを使用して、NGINXがシステムスタートアップでNGINXの自動起動を有効にすることができます。 SystemCTLステータスNGINXを使用して、スタートアップが成功していることを確認します。 Webブラウザのhttp:// localhostにアクセスして、デフォルトのウェルカムページを表示します。

Nginxが起動されているかどうかを確認する方法は?Nginxが起動されているかどうかを確認する方法は?Apr 14, 2025 pm 12:48 PM

Linuxでは、次のコマンドを使用して、nginxが起動されるかどうかを確認します。SystemCTLステータスNGINXコマンド出力に基づいて、「アクティブ:アクティブ(実行)」が表示された場合、NGINXが開始されます。 「アクティブ:非アクティブ(dead)」が表示されると、nginxが停止します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、