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

推薦する

モバイル適応型ウェブページ効果は、小さな表示ページの問題を解決します

仕事上、携帯電話に適応した Web ページ効果を作成する必要があります。ようやく完成しました。まずは...

Centos7 の起動プロセスと Systemd での Nginx の起動構成

Centos7 の起動プロセス: 1.post(電源投入時のセルフテスト) 電源投入時のセルフテスト...

React-Native環境のセットアップと基本的な紹介

環境の準備1. 環境構築React Native 中国語ウェブサイト2. 開発ツール フロントエンド...

HTML Webページ作成チュートリアル iframeタグを慎重に使用してください

iframe を使用すると、他の Web サイトのページを簡単に呼び出すことができますが、注意して使...

MySQL テーブル作成外部キー エラーの解決方法

データベーステーブルA: テーブル task_desc_tab を作成します ( id INT(11...

ウェブページ要素の完全な分析

相対的な長さの単位それら説明: 相対的な長さの単位。現在のオブジェクト内のテキストのフォント サイズ...

HTMLページ間で値を渡す問題の解決策

初めてこのエッセイを使ったとき、私はかなりぎこちなく感じましたhtmlファイルコードをコピーコードは...

DockerでJenkinsをインストールし、初期プラグインのインストール失敗の問題を解決する

Jenkins をインストールした後、プラグインの初期ダウンロードが常に失敗し、インストールが失敗し...

HTMLフォームのいくつかの送信方法の概要

最も一般的で、最もよく使用され、最も一般的な方法は、submit タイプを使用することです。コードを...

Linuxでmysqlの定期的なコールドバックアップを実装するためにmysqldump+expect+crontabを使用するアイデアの詳細な説明

目次1. 遭遇した問題2. アイデア3. コード1. 遭遇した問題私たちは皆、mysqldump を...

Vueは、センシティブな単語フィルタリングコンポーネントを検出するためのさまざまなアイデアを実装しています。

目次前面に書かれた要件分析 v1アイデア1: インターセプションメソッドを使用して入力ボックスの入力...

Vue+Openlayer をベースに geojson を動的に読み込む方法

1つ以上の機能をロードする <テンプレート> <div id="map&...

最新の JavaScript で非同期タスクを書く方法

序文この記事では、非同期 JavaScript の進化と、それがコードの記述方法にどのような変化をも...

リストループスクロールを実現するための HTML+CSS+JavaScript サンプルコード

説明: 指定された時間内に前のノードのコンテンツを置き換えるタイマーを設定します。 1. キーコード...

vue2 vue3 での Echarts の詳細な使用方法

目次1. インストール2. vue2でEchartsを使用するmain.jsファイル内コンテナが与え...