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

推薦する

js Promise同時制御メソッド

目次質問背景アイデアと実装質問次のように、同時実行 Promise の数を制御するメソッドを記述する...

Linux サーバーと Windows システム間でファイルをアップロードおよびダウンロードする方法

背景: Linux サーバーのファイルのアップロードとダウンロード。 XShell+Xftp インス...

CentOS 8.1 で LEMP (Linux+Nginx+MySQL+PHP) 環境を構築する (チュートリアルの詳細)

目次ステップ1: CentOS 8でパッケージを更新するステップ2: CentOS 8にNginx ...

MySQL 8.0 のデフォルトのデータディレクトリを変更する (設定なしの簡単な操作)

使用シナリオ: Alibaba Cloud を使用しており、データディスクを別途購入しました (大容...

mysql5.7.22 ダウンロードプロセス図

1. 公式ウェブサイト www.mysql.com にアクセスし、ダウンロードを選択します。 2. ...

Ubuntu 18.04 コマンドでタッチパッドを無効/有効にする

Ubuntu では、ショートカット キーでタッチパッドをオフにできない状況によく遭遇します。この問題...

MySQLの基本操作を詳しく解説(第2部)

序文この記事には1. データベースのいくつかの主要な制約2. テーブル間の関係制約:主キー制約: 機...

MySQLのトランザクション特性とレベル原則の分析

1. トランザクションとは何ですか?データベース トランザクション (略称: トランザクション) は...

VMware ESXi6.7 の簡単なセットアップ(画像とテキスト付き)

1. VMware vSphere の概要VMware vSphere は、業界をリードする最も信...

MySQL の自動増分主キーに関する詳細な説明

目次特徴保存戦略自己増加の決定自動増分値の変更実行プロセス問題点自動増分ロックロック戦略バッチ挿入の...

CocosCreatorメッセージ配信メカニズムの詳細な説明

概要この記事は、ゲームビジネスアーキテクチャに関連するコンテンツの紹介から始まります。ゲームビジネス...

Dockerオーバーレイはホスト間のコンテナ相互通信を実現します

目次1. Dockerの設定2. レジストリとネットワークを作成する3. コンテナを起動する環境説明...

Dockerを使用して外部からアクセス可能なMySQLを構築する詳細な説明

MySQL 8.0をインストールする docker run -p 63306:3306 -e MYS...

ウェブサイトデザインの基礎知識:初心者の方はぜひお読みください

今では多くの人がウェブサイト作成に参加していますが、ウェブサイトはどのように作成すればよいのでしょう...

React ページ ターナーの実装 (フロント エンドとバックエンドを含む)

目次フロントエンド上記のアイデアに従って、ページめくり機能を設計して記述します。バックエンド(Jav...