序文 nginx モジュールには、公式とサードパーティの 2 種類があります。nginx のインストール情報を表示するには、コマンド nginx -V を使用し、--with nginx 起動時の読み込みに関する次のモジュール情報を確認できます。 realipモジュール 目的:ローカル Nginx がリバース プロキシ バックエンドにある場合、ユーザーの実際の IP アドレスを取得できます。 使用方法: realip 関数では、Nginx が ngx_http_realip_module モジュールを追加する必要がありますが、これはデフォルトではコンパイルされません。追加する必要がある場合は、コンパイル時に --with-http_realip_module オプションを追加して有効にしてください。 リアリップスコープ set_real_ip_from、real_ip_header、real_ip_recursive はすべて、http、サーバー、およびロケーション ゾーン構成で使用できます。 いくつかの realip パラメータの説明
http ヘッダーの X-Forwarded-For、X-Real-IP、およびリモート アドレスの説明 X-Forwarded-For は HTTP リクエスト ヘッダーにあり、HTTP リクエストの終了時の実際の IP アドレスを示すために使用される HTTP の拡張ヘッダーです。 形式は次のとおりです。 X-Forwarded-For: クライアント、プロキシ1、プロキシ2 Nginx プロキシは通常、次のように構成されます。 proxy_set_header ホスト $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 説明する:
Realip関数の例 以下に簡単なアーキテクチャ図を示します。 仮定1: 1. Nginx が realip モジュールを使用しない場合、2 番目の Nginx の X-Forwarded-For リクエストは 1.1.1.1 ですが、remote_addr アドレスは 2.2.2.2 です。このとき、アプリケーション サービスは X-Forwarded-For フィールドを通じてユーザーの実際の IP を取得できます。ただし、ここにはリスクがあります。中間に複数の層のリバース プロキシ サービスがある場合、一意のユーザーの実際の IP を取得することは不可能になります。 2. Nginx が realip モジュールを使用し、次のように設定されている場合、Nginx は X-Forwarded-For の最後の IP (2.2.2.2) を実際の IP として取得します。最後に、アプリケーション サービスによって取得されるアドレスも 2.2.2.2 ですが、実はこれはユーザーの IP ではありません。 2.2.2.2 から実際の IP を設定します。 2.2.2.3 から set_real_ip_from; real_ip_header X-Forwarded-For; real_ip_recursive をオフ; 3. Nginx が realip モジュールを使用し、次のように設定されている場合、2.2.2.2 は信頼できるサーバー IP であるため、Nginx は前方検索を続行し、1.1.1.1 が信頼できるサーバー IP ではないことを検出すると、それを実際の IP と見なします。しかし、実際には 1.1.1.1 はユーザーの IP です。最後に、アプリケーション サービスはユーザーの固有の実際の IP も取得します。 2.2.2.2 から実際の IP を設定します。 2.2.2.3 から set_real_ip_from; real_ip_header X-Forwarded-For; real_ip_recursive オン; 要約する Nginx 基礎学習における realip モジュールの使用に関するこの記事はこれで終わりです。Nginx realip モジュールの使用に関する詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: mysql-8.0.19-winx64 をインストールしてログインするための初心者向けチュートリアル (初心者必読)
>>: JavaScript 関数呼び出し、適用、バインド メソッドのケース スタディ
目次1. 概要2. nginx.conf 1) 設定ファイルの場所2) ワーカープロセス3) イベン...
目次1. DIVとSPANの違いと特徴2. スパンタグの概要3. 拡大と改善4. 凡例の効果の実証例...
MySQL では通常、limit を使用してページ上のページング機能を完了しますが、データ量が大きな...
MySQL はリレーショナル データベース管理システムです。リレーショナル データベースは、すべて...
この記事の例では、Reactカプセル化グローバルポップアップボックスの具体的なコードを参考までに共有...
目次1. 目的2. 文法3. 練習する1. 目的通常、エラーが発生すると、スクリプトは直ちに停止し、...
今日は春節の金貨の赤い封筒のアクティビティを作りました。なかなか良い出来だと思います。皆さんと共有し...
テーブルを素早くコピーする方法まず、テーブル db1.t を作成し、1000 行のデータを挿入します...
目次効果テキストの作成を開始するまずフォントローダーを作成するフォントライブラリを読み込むテキストジ...
例を通して、MySQL のデータ テーブル送信のクエリが遅い問題の解決策を共有しました。最近、コード...
目次背景メインコンテンツ1. コンポーネントの比較2. 実装のアイデア3. キーメソッドソースコード...
複数の条件を持つ MySQL クエリ環境: MySQL 5.7 where ステートメントに複数の ...
1. SpringBoootプロジェクトを作成し、jarパッケージにパッケージ化する2. Linux...
1. アップグレードプロセス: sudo apt-get updateパッケージが見つからない、パッ...
以前の開発では、クラス、名前などの HTML のデフォルト属性を使用していました。 Huawei社の...