目次
プロキシ プロトコルは nginx に適用されます
nginx でプロキシ プロトコルを有効にする
http ブロックの方がよく知られており、nginx では http/https のサポートを表します。 Nginx は TCP/UDP プロトコルのサポートを提供しますが、この機能はストリーム モジュールを通じて実装されますが、これは多くの人にとって比較的馴染みのないものです。
ログは非常に重要な機能です。問題の特定やデータの統計分析の実行に非常に役立ちます。もちろん、必要なのは実際のクライアント IP アドレスです。
ホームページ 運用・保守 Nginx nginx でプロキシ プロトコルを構成して使用する方法

nginx でプロキシ プロトコルを構成して使用する方法

May 18, 2023 am 08:47 AM
nginx proxy protocol

    プロキシ プロトコルは 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-mail
    ログイン後にコピー

    nginx が 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 サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホット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ヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

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

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    nginxの実行ステータスを確認する方法 nginxの実行ステータスを確認する方法 Apr 14, 2025 am 11:48 AM

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

    nginxでロードバランシングを構成する方法 nginxでロードバランシングを構成する方法 Apr 14, 2025 am 08:33 AM

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

    nginx403を解く方法 nginx403を解く方法 Apr 14, 2025 am 10:33 AM

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

    Nginxでリダイレクトする方法 Nginxでリダイレクトする方法 Apr 14, 2025 am 08:42 AM

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

    nginxでストリームを有効にする方法 nginxでストリームを有効にする方法 Apr 14, 2025 am 09:45 AM

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

    Nginxクロスドメインの問題を解決する方法 Nginxクロスドメインの問題を解決する方法 Apr 14, 2025 am 10:15 AM

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

    NginxでWebサイトを構築する方法 NginxでWebサイトを構築する方法 Apr 14, 2025 am 11:21 AM

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

    サーバーIPにnginxアクセスアドレスを設定する方法 サーバーIPにnginxアクセスアドレスを設定する方法 Apr 14, 2025 am 11:36 AM

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

    See all articles