Nginx HTTP リクエスト フィルタリングとリバース プロキシ パフォーマンス分析
Nginx HTTP リクエスト フィルタリングとリバース プロキシ パフォーマンス分析
Nginx は、業界で広く使用されている HTTP サーバーおよびリバース プロキシ サーバーであり、そのシンプルな設計、優れたパフォーマンス、その他の利点により、大規模なサーバーとなっています。 Web アプリケーションの数、クラウド システムおよびモバイル アプリケーションの優先サーバー。実際のアプリケーションでは、Nginx は HTTP リクエストの処理と応答を担当するだけでなく、HTTP リクエストのフィルタリングやリバース プロキシも実行します。この記事では、Nginx の HTTP リクエスト フィルタリングとリバース プロキシの実装を分析し、パフォーマンス テストと分析を実行します。
- 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 などの他のタイプの変数や命令も提供します。ドキュメントの理解が深まります。
- リバース プロキシの実装
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 のリバース プロキシは、負荷分散アルゴリズム、エラー処理、セッション固定性などの高度な戦略も提供します。読者は関連ドキュメントを参照して詳細を学ぶことができます。
- パフォーマンス テストと分析
上記の分析を通じて、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 サイトの他の関連記事を参照してください。

ホット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)

ホットトピック









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

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

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

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

質問への回答:304変更されていないエラーは、ブラウザがクライアントリクエストの最新リソースバージョンをキャッシュしたことを示しています。解決策:1。ブラウザのキャッシュをクリアします。 2.ブラウザキャッシュを無効にします。 3.クライアントキャッシュを許可するようにnginxを構成します。 4.ファイル許可を確認します。 5.ファイルハッシュを確認します。 6. CDNまたは逆プロキシキャッシュを無効にします。 7。nginxを再起動します。

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

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

Nginxクロスドメインの問題を解決するには2つの方法があります。クロスドメイン応答ヘッダーの変更:ディレクティブを追加して、クロスドメイン要求を許可し、許可されたメソッドとヘッダーを指定し、キャッシュ時間を設定します。 CORSモジュールを使用します。モジュールを有効にし、CORSルールを構成して、ドメインクロスリクエスト、メソッド、ヘッダー、キャッシュ時間を許可します。
