プロキシ プロトコルは nginx に適用されます
nginx が Web サーバーおよびプロキシ サーバーであることはわかっています。通常、プロキシ サーバーまたは負荷分散ソフトウェアで動作します ( Amazon Elastic Load Balancer (ELB) の背後にある Haproxy 。
最初に、クライアントはプロキシ サーバーまたは負荷分散ソフトウェアへのリクエストを開始し、その後リクエストは実際の Web アクセスのために nginx に転送されます。
複数のソフトウェア層を通過しているため、IP アドレス、ポート番号などのクライアントに関する一部の情報が隠されている可能性があり、問題分析やデータ統計に悪影響を及ぼします。私たちは実際の IP を取得したいと考えています。正確なリクエスト環境を取得するには、クライアントのアドレスを取得します。
この場合、PROXY プロトコルを使用する必要があります。
上記のプロキシまたは LSB が PROXY プロトコルを実装している場合、それがHTTP または SSL 、HTTP/2、SPDY、WebSocket または TCP プロトコルの場合、nginx はクライアントの元の IP アドレスを取得し、元の IP アドレスに基づいて、悪意のある IP からのアクセスのブロックや異なる言語の表示などの特別な操作を実行できます。または、異なる IP に基づくページ、またはより単純なロギングと統計などが非常に効果的です。
もちろん、PROXY プロトコルをサポートしたい場合は、nginx バージョンの要件もあります。バージョン要件は次のとおりです:
PROXY プロトコル v2 をサポートするには、NGINX Plus R16 または NGINX Open Source 1.13.11 が必要です。 HTTP の ROXY プロトコルをサポートするには、NGINX Plus R3 または NGINX オープン ソース 1.5.12 が必要です。
TCP クライアント側の PROXY プロトコルをサポートするには、NGINX Plus R7 または NGINX オープン ソース 1.9.3
-
TCP の PROXY プロトコルをサポートするには、NGINX Plus R11 または NGINX オープンソース 1.11.4 が必要です。
nginx では、対応するクライアント情報は、次の変数を通じて取得できます。具体的には次のようになります。
$proxy_protocol_addr と $proxy_protocol_port は、それぞれ元のクライアントの IP アドレスとポート番号を表します。
$remote_addr と $remote_port は、ロード バランサーの IP アドレスとポートを表します。
RealIP 拡張モジュールを使用する場合、このモジュールは $remote_addr と $remote_port の 2 つの値を書き換えて、元のクライアントの IP アドレスとポート番号に置き換えます。
次に、$realip_remote_addr と $realip_remote_port を使用して、ロード バランサーの IP アドレスとポートを表します。
RealIP 拡張モジュールでは、$proxy_protocol_addr と $proxy_protocol_port の意味は変更されず、元のクライアントの IP アドレスとポート番号のままです。
nginx でのプロキシ プロトコルの構成と使用
nginx でのプロキシ プロトコルの基本的なアプリケーションについては上で説明しましたが、nginx で具体的な構成を実行する方法について説明します。
nginx でプロキシ プロトコルを有効にする
nginx がすでにプロキシ プロトコルをサポートするバージョンである場合、プロキシ プロトコルを有効にするのは非常に簡単で、サーバーのリッスンに proxy_protocol を追加するだけです。以下に示すように:
http { #... server { listen 80 proxy_protocol; listen 443 ssl proxy_protocol; #... } } stream { #... server { listen 112233 proxy_protocol; #... } }
http ブロックの方がよく知られており、nginx では http/https のサポートを表します。 Nginx は TCP/UDP プロトコルのサポートを提供しますが、この機能はストリーム モジュールを通じて実装されますが、これは多くの人にとって比較的馴染みのないものです。
上記の構成により、nginx は tcp/udp プロトコルと http/https プロトコルの両方でプロキシ プロトコルをサポートできます。
Real-IP モジュールの使用
Real-IP モジュールは nginx に付属するモジュールです。次のコマンドを使用して、nginx に real-ip モジュールがインストールされているかどうかを確認できます。
nginx -V 2>&1 | grep -- 'http_realip_module' nginx -V 2>&1 | grep -- 'stream_realip_module'現在使用しているバージョンに実際の IP がない場合でも、心配する必要はありません。この時点でソース コードからコンパイルする必要がある場合があります。 コンパイル プロセス中に、configure コマンドを実行する必要があります。このconfigure コマンドでは、stream や http_ssl_module など、有効にする機能を指定できます。 real-ip 機能を有効にする場合は、次を追加できます:
$ ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-pcre=../pcre-8.44 --with-zlib=../zlib-1.2.11 --with-http_ssl_module --with-stream --with-mailnginx が SLB またはプロキシの背後で実行されている場合は、次のように set_real_ip_from コマンドを使用してプロキシまたはロード バランシング サーバーの IP 範囲を指定できます。 ##
--with-http_realip_module
次に、プロキシまたは SLB の IP アドレスを実際のクライアントのアドレスに置き換える必要があります。その後、次のように使用できます。
server { #... set_real_ip_from 192.168.1.0/24; #... }
リクエスト転送
http ブロックかストリーム ブロックかにかかわらず、後続のアップストリーム転送では、アップストリームの場合、プロキシまたは slb アドレスの代わりに実際のクライアント IP アドレスを受信することを希望するリクエストの方向が発生する可能性があります。これは、次の設定で解決できます:
http { server { #... real_ip_header proxy_protocol; } }
http { proxy_set_header X-Real-IP $proxy_protocol_addr; proxy_set_header X-Forwarded-For $proxy_protocol_addr; }
http ストリームの設定方法が異なります。
ログ
ログは非常に重要な機能です。問題の特定やデータの統計分析の実行に非常に役立ちます。もちろん、必要なのは実際のクライアント IP アドレスです。
以下に示すように、変数 $proxy_protocol_addr を使用して、http ブロックとストリーム ブロックに対応するログを記録できます。
以上がnginx でプロキシ プロトコルを構成して使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Nginxは、高い同時コンテンツと静的コンテンツの処理に適していますが、Apacheは複雑な構成と動的コンテンツに適しています。 1。NGINXは、交通量の多いシナリオに適した同時接続を効率的に処理しますが、動的コンテンツを処理するときは追加の構成が必要です。 2。Apacheは、複雑なニーズに適したリッチモジュールと柔軟な構成を提供しますが、並行性のパフォーマンスが低いです。

NginxとApacheにはそれぞれ独自の利点と欠点があり、選択は特定のニーズに基づいている必要があります。 1.Nginxは、非同期の非ブロッキングアーキテクチャのため、高い並行性シナリオに適しています。 2。Apacheは、モジュラー設計のため、複雑な構成を必要とする低変動シナリオに適しています。

Nginxunitは、複数のプログラミング言語をサポートし、動的構成、ゼロダウンタイム更新、組み込みのロードバランシングなどの機能を提供するオープンソースアプリケーションサーバーです。 1。動的構成:再起動せずに構成を変更できます。 2。多言語サポート:Python、Go、Java、PHPなどと互換性があります。 4。ビルトインロードバランシング:リクエストは、複数のアプリケーションインスタンスに配布できます。

nginxunitは、多言語プロジェクトや動的な構成要件に適した、apachetomcat、gunicorn、node.jsビルトインHTTPサーバーよりも優れています。 1)複数のプログラミング言語をサポートします。2)動的な構成リロード、3)高いスケーラビリティと信頼性を必要とするプロジェクトに適した組み込みの負荷分散機能を提供します。

Nginxunitは、モジュラーアーキテクチャと動的な再構成機能により、アプリケーションのパフォーマンスと管理性を向上させます。 1)モジュラー設計には、マスタープロセス、ルーター、アプリケーションプロセスが含まれ、効率的な管理と拡張をサポートします。 2)動的再構成により、CI/CD環境に適した、実行時に構成をシームレスに更新できます。 3)多言語サポートは、言語ランタイムの動的なロードを通じて実装され、開発の柔軟性が向上します。 4)イベント駆動型モデルと非同期I/Oによって高性能が達成され、高い並行性の下でも効率的なままです。 5)申請プロセスを分離し、アプリケーション間の相互の影響を減らすことにより、セキュリティが改善されます。

nginxunitを使用して、アプリケーションを複数の言語で展開および管理できます。 1)nginxunitをインストールします。 2)PythonやPHPなどのさまざまなタイプのアプリケーションを実行するように構成します。 3)アプリケーション管理に動的構成関数を使用します。これらの手順を通じて、アプリケーションを効率的に展開および管理し、プロジェクトの効率を向上させることができます。

NGINXは、高い並行接続の処理に適していますが、Apacheは複雑な構成とモジュール拡張が必要なシナリオにより適しています。 1.Nginxは、高性能と低リソース消費で知られており、高い並行性に適しています。 2. Apacheは、その安定性とリッチモジュール拡張機能で知られています。これは、複雑な構成ニーズに適しています。

Nginxunitは、動的な構成と高性能アーキテクチャにより、アプリケーションの柔軟性とパフォーマンスを向上させます。 1.動的構成により、サーバーを再起動せずにアプリケーション構成を調整できます。 2.高性能は、イベント駆動型および非ブロッキングアーキテクチャおよびマルチプロセスモデルに反映され、同時接続を効率的に処理し、マルチコアCPUを利用できます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

WebStorm Mac版
便利なJavaScript開発ツール

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

ホットトピック









