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 選のコレクションと共有

推薦する

Nginx のパフォーマンスを向上させるための提案

Web アプリケーションが 1 台のマシンでのみ実行される場合、パフォーマンスを向上させるのは非常に...

フレックスレイアウトの互換性の問題の概要

1. W3C バージョンの flex 2009年版フラグ: display: box; または bo...

tomcat+nginx を使用してマルチアプリケーション デプロイメントを実装するためのサンプル コード

目次マルチアプリケーションの展開1-Tomcat 構成1.1- プロジェクト構成1.2-サービス構成...

VMware 15 仮想マシンに Ubuntu 18.04 をインストールするグラフィック チュートリアル

ここ数年、私は自動化とコンピューターを行ったり来たりしてきました。最近は、機械学習に関連するプロジェ...

シンプルなドラッグ効果を実現するJavaScript

この記事では、簡単なドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

Vue のルータールーティングの 2 つのモード (ハッシュと履歴) の詳細な説明

ハッシュモード(デフォルト)動作原理:ウェブページのハッシュ値の変化を監視する—> onhas...

MySQLテーブルをコピーする方法

目次1.mysqlダンプ実行プロセス:特徴2. CSVファイルをエクスポートする(最も柔軟性が高い)...

MySQL バッチ挿入とユニークインデックスの問題に対する解決策

MySQL バッチ挿入の問題プロジェクトを開発しているときに、古いシステムの基本データを事前にインポ...

MIME TYPEとは?MIME-Typesタイプコレクション

MIME タイプとは何ですか? 1. まず、ブラウザがコンテンツを処理する方法を理解する必要がありま...

Docker で Let's Encrypt から永久無料 SSL 証明書を取得する方法

1. 原因公式の cerbot は面倒すぎます。野生の成長よりもさらに悪い acme.sh の使用は...

行の高さと垂直方向の配置についての深い理解

いくつかの概念行ボックス: インライン ボックスを囲むボックス。1 つ以上の行ボックスが積み重ねられ...

CentOS に PHP5 をインストール、PHP をアンインストール、PHP7 をインストールするチュートリアル

まず、PHP5をインストールするのはとても簡単ですyum install php PHP5 を使用し...

ウェブデザイナーが注意すべき 43 のウェブデザインの間違い

これはウェブサイトのユーザビリティに関する記事です。著者は自身の経験に基づいて、ウェブサイトのデザイ...

Mysql データベースの日付と日時型でデフォルト値 0000-00-00 を設定するときに発生するエラー問題の詳細な説明

現象: MySQL バージョン 5.7 以降では、日付型と日付時刻型のデフォルト値が「0000-00...