nginx でプロキシ プロトコルを構成して使用する方法
プロキシ プロトコルは 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'
$ ./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-mail
--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 サイトの他の関連記事を参照してください。

ホット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の実行ステータスを表示する方法は次のとおりです。PSコマンドを使用してプロセスステータスを表示します。 nginx configuration file /etc/nginx/nginx.confを表示します。 NGINXステータスモジュールを使用して、ステータスエンドポイントを有効にします。 Prometheus、Zabbix、Nagiosなどの監視ツールを使用します。

負荷分散のためにnginxを構成する方法は?アップストリームサーバープールを定義し、サーバーIPとポートを指定します。仮想ホストを定義し、接続を聞いて、上流のプールに転送します。場所を指定し、リクエストを一致させ、上流のプールに転送します。

Nginx 403禁止エラーを修正する方法は?ファイルまたはディレクトリの許可を確認します。 2。HTACCESSファイルを確認します。 3. nginx構成ファイルを確認します。 4。nginxを再起動します。他の考えられる原因には、ファイアウォールルール、Selinux設定、またはアプリケーションの問題が含まれます。

Nginxを介したリダイレクトの方法は、301の永続的リダイレクト(リンクまたはモバイルページの更新)と302の一時リダイレクト(処理エラーまたは一時的な変更)です。リダイレクトの構成には、サーバーブロックでのロケーションディレクティブの使用が含まれます。高度な機能には、正規表現のマッチング、プロキシリダイレクト、条件ベースのリダイレクトが含まれます。リダイレクトの一般的な用途には、URLの更新、エラーの取り扱い、HTTPのHTTPへのリダイレクト、および特定の国または言語バージョンへのユーザーをガイドすることが含まれます。

Nginxのストリームモジュールを有効にする方法は?ストリームモジュールを有効にするには、6つのステップが必要です。ストリームモジュール構成nginxのインストールストリームサーバーブロック構成ストリームサーバーオプションを再起動nginx検証を再起動します

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

Nginxを使用してWebサイトを構築することは、5つのステップで実行されます。1。nginxをインストールします。 2。主にリスニングポート、Webサイトルートディレクトリ、インデックスファイル、エラーページの構成を構成します。 3.ウェブサイトファイルを作成します。 4。nginxをテストします。 5. SSL暗号化、逆プロキシ、ロードバランシング、キャッシュなど、必要に応じて高度な構成を実行できます。

nginxでサーバーIPにアクセスアドレスを設定するには、サーバーブロックを構成するか、リスニングアドレス(リッスン192.168.1.10:80など)を設定するサーバー名(server_name example.com www.example.comなど)を設定するか、サーバーIPとリロードNginxにアクセスして変更を適用するために空白のままにしておきます。
