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

推薦する

マウスを傾けた状態でのフリップナビゲーションの問題に関する研究

この記事では、マウス フリップナビゲーションの制作についてまだ疑問を持っている友人の役に立つことを期...

Linux カーネル デバイス ドライバーのメモリ管理に関する注意事項

/************************ * Linux メモリ管理 *********...

W3C チュートリアル (12): W3C SOAP アクティビティ

Web サービスは、アプリケーション間の通信に関係しています。SOAP は、Web サービス間の X...

HTML スペースコードの簡単な分析

HTML についてどれくらい知っていますか? 現在、基本的な HTML コードを学習している場合は、...

Linux が Sudo 権限昇格の脆弱性を公開、どのユーザーでも root コマンドを実行可能

Linux で最も一般的に使用される重要なユーティリティの 1 つである Sudo は、ほぼすべての...

Mysql データベース ストアド プロシージャの基本構文の説明

プロシージャ sp_name を削除します//これまで、MYSQL 構文の基礎知識について説明して...

JS上級編ES6の6つの継承方法

目次1. プロトタイプチェーン継承2. コンストラクタによる継承3. 組み合わせ継承4. プロトタイ...

koa2 サービスに SSL を設定する方法

I. はじめに1: SSL証明書私のドメイン名は Tencent Cloud にあります。第 3 レ...

MySQL DDLステートメントの使用

序文SQL の言語分類には主に以下の種類があります。 DDLデータ定義言語作成、削除、変更データ定義...

MySQLの外部ネットワークアクセス権を開く方法

以下のように表示されます。主に認証コマンドを実行します: 2つの方法1. 任意のホストがユーザー b...

MySQL 圧縮パッケージ版 zip インストール設定方法

圧縮版の記事ではデータの初期化がされていないなどいくつか問題があったため、Windows にインスト...

W3C チュートリアル (4): W3C XHTML アクティビティ

HTML は、World Wide Web 上で公開するために使用されるハイブリッド言語です。 XH...

フラッシュコンテンツの表示に使用される OBJECT タグと EMBED タグの違いの紹介

1. はじめに:ウェブページにフラッシュ コンテンツを正常に表示したい場合は、ページ上のフラッシュ ...

JavaScript で 24 以上の配列メソッドを手動で実装する

目次1. トラバーサルクラス1. 各2. 地図3. すべての4. いくつか5. フィルター6. 減ら...

IDEA を MYSQL データベースに接続するための構成時に失敗する問題の解決策

この記事では、主に、IDEA を MYSQL データベースに接続するための構成時に失敗する問題の解決...