nginx の 2 つのモジュールの proxy_pass の違い

nginx の 2 つのモジュールの proxy_pass の違い

1. 1.ngx_stream_proxy_moduleモジュールのproxy_passディレクティブ

サーバー セグメントでのみ使用でき、ドメイン名または IP アドレスとポートのみが必要です。

これは、TCP ポートまたは UDP ポートのいずれかのポート転送として理解できます。

サーバー{
    127.0.0.1:12345 をリッスンします。
    プロキシパス 127.0.0.1:8080;
}
 
サーバー{
    聞く 12345;
    proxy_connect_timeout 1秒;
    プロキシタイムアウト 1分;
    proxy_pass example.com:12345;
}
 
サーバー{
    53 udp を聞きます。
    プロキシ応答 1;
    proxy_timeout 20秒;
    プロキシパス dns.example.com:53;
}
 
サーバー{
    聞く [::1]:12345;
    proxy_pass unix:/tmp/stream.socket;

2. 2.ngx_http_proxy_moduleモジュールのproxy_passディレクティブ

  • これは、location セグメント、location 内の if セグメント、および limit_except セグメントで使用する必要があります。
  • ドメイン名または IP アドレスとポートに加えて、「http」や「https」などのプロトコルも必要です。
  • 設定できるオプションの URI もあります。

3. proxy_pass後のバックエンドサーバーのURL(request_uri)の分析

サーバー{
    聞く 80;
    サーバー名 www.test.com;
 
    # シナリオA
    # http://www.test.com/testa/aaaa にアクセスしてください
    # バックエンドの request_uri は /testa/aaaa です
    場所 ^~ /testa/ {
        プロキシパス http://127.0.0.1:8801;
    }
    
    # シナリオB
    # http://www.test.com/testb/bbbb にアクセスしてください
    # バックエンドの request_uri は /bbbb です
    場所 ^~ /testb/ {
        プロキシパス http://127.0.0.1:8801/;
    }
 
    # シナリオC
    # 次の場所は正しいです ~ /testc {
        プロキシパス http://127.0.0.1:8801;
    }
 
    # シナリオD
    # 次の場所は間違っています#
    # nginx -t を実行すると、次のエラーが報告されます。 
    #
    # nginx: [emerg] 「proxy_pass」は正規表現で指定された場所にURI部分を持つことはできません 
    # 式、または名前付き場所内、または「if」ステートメント内、または 
    # /opt/app/nginx/conf/vhost/test.conf:17 の "limit_except" ブロック
    # 
    # location が正規表現の場合、proxy_pass に URI 部分を含めることはできません。この例には「/」が含まれています
    場所 ~ /testd {
        proxy_pass http://127.0.0.1:8801/; # 場所が正規表現の場合、このように記述することはできないことに注意してください。 ! !
    }
 
    # シナリオE
    # http://www.test.com/ccc/bbbb にアクセスしてください
    # バックエンドの request_uri は /aaa/ccc/bbbb です
    場所 /ccc/ {
        プロキシパス http://127.0.0.1:8801/aaa$request_uri;
    }
 
    # シナリオF
    # http://www.test.com/namea/ddd にアクセスしてください
    # バックエンドの request_uri は /yongfu?namea=ddd です
    場所 /namea/ {
        /namea/([^/]+) /yongfu?namea=$1 を書き換えて中断します。
        プロキシパス http://127.0.0.1:8801;
    }
 
    # シナリオG
    # http://www.test.com/nameb/eee にアクセスしてください
    # バックエンドの request_uri は /yongfu?nameb=eee です
    場所 /nameb/ {
        /nameb/([^/]+) /yongfu?nameb=$1 を書き換えて中断します。
        プロキシパス http://127.0.0.1:8801/;
    }
 
    アクセスログ /data/logs/www/www.test.com.log;
}
 
サーバー{
    聞く 8801;
    サーバー名 www.test.com;
    
    ルート /data/www/test;
    インデックス index.php index.html;
 
    ^(.*)$ /test.php?u=$1 last を書き換えます。
 
    場所 ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/tmp/php-cgi.sock;
        fastcgi_index インデックス.php;
        fastcgi.conf をインクルードします。
    }
 
    アクセスログ /data/logs/www/www.test.com.8801.log;
}

nginx の 2 つの proxy_pass モジュールの違いに関するこの記事はこれで終わりです。より関連性の高い nginx proxy_pass モジュールのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • nginx における proxy_pass のさまざまな使用法の詳細な説明
  • Nginx の場所と proxy_pass パスの設定の問題の概要
  • nginx proxy_pass 設定で URL が / で終わる場合と / なしで終わる場合の違いの詳細な説明
  • nginx の場所に複数の Proxy_pass メソッドがある
  • nginx リバース プロキシでの proxy_pass の実装

<<:  レスポンシブフレームワークのテーブルヘッダーの自動改行問題に対する簡単な解決策

>>:  非常に優れた CSS スキル 10 選のコレクションと共有

推薦する

MySQL 5.7 における部分テーブルのデュアルマスター同期の実装プロセスの詳細な説明

序文最近、私はある要件に遭遇しました。会社の業務上、2 つのデータベース間の一部のテーブルは、リアル...

Vueのドラッグスクリーンショット機能を実装する簡単な方法

マウスをドラッグしてページのスクリーンショットを撮ります(指定した領域にスクリーンショットをドラッグ...

three.js を使用してクールなアシッドスタイルの 3D ページ効果を実現します

この記事では、主にReact + three.jsテクノロジースタックを使用して3Dモデルの読み込み...

git bash を使用して Linux にログインするための ssh の設定方法

1. まず、Linux サーバー上で公開鍵ファイルと秘密鍵ファイルを生成します。デフォルトの保存ディ...

MySQL Group by最適化の詳細な説明

目次標準的な実行プロセス最適化並べ替えを削除並べ替え成し遂げる要約する標準の Group by ステ...

Linux環境でユーザーにsudo権限を追加する方法

sudo 設定ファイルsudo のデフォルトの設定ファイルは /etc/sudoers です。一般的...

MYSQL 左結合の最適化 (10 秒から 20 ミリ秒)

目次【機能背景】 [生のSQL] 【独自SQL解析】 【分析手順】 [最適化されたSQL] 【最適化...

mysql ビュー関数の分析と使用例

この記事では、例を使用して MySQL ビューの機能と使用方法を説明します。ご参考までに、詳細は以下...

ブラウザの自動更新を実装するReactサンプルコード

目次フロントエンドルーティングとは何ですか?フロントエンドルーティングを実装するにはどうすればいいで...

ポータルサイトのフォーカス画像のデザインに関するいくつかの結論

フォーカス画像は、画像、テキスト、動的なインタラクティブ効果を統合したコンテンツを表示する方法です。...

Adobe Brackets の簡単な使い方のグラフィックチュートリアル

Adobe Brackets は、HTML、CSS、JavaScript 用のオープンソースでシンプ...

MySQL の自動増分 ID に関するいくつかの小さな問題の要約

以下の質問はすべて InnoDB ストレージ エンジンに基づいています。 1. 最も大きな ID を...

Centos7 で keepalived ログを別のパスに設定する方法の詳細な説明

Keepalived のインストール: cd <keepalived_sourcecode_p...

MySQL スケジュール バックアップ ソリューション (Linux crontab を使用)

序文この世の愛には値段のつくものもありますが、データには値段のつけられないものがあります。将来、誤っ...

LeetCode の SQL 実装 (196. 重複するメールボックスを削除する)

[LeetCode] 196.重複したメールを削除するSQL クエリを記述して、Person とい...