Nginx ドメイン転送の使用シナリオ コード例

Nginx ドメイン転送の使用シナリオ コード例

シナリオ 1: サーバーの制限により、外部に開かれているポートは 1 つだけですが、別の外部ネットワーク環境を要求する必要があるため、トランジット サーバーで nginx を使用してデータを転送します。

成し遂げる:

サーバー{
 聞く 8051;
 server_name ローカルホスト;
 
 場所 /ライセンス/ {
      プロキシパス http://xxx.xxx.xxx.xxx:8058/;
 }
 
 位置 / {
      proxy_pass http://xxx.xxx.xxx.xxx:8051/; } }

特記事項:

注: ここでファイルアップロード転送が関係する場合は、server_name の下に client_max_body_size 100m を追加します。

ドメイン名転送アドレスproxy_passの後に「/」を付ける必要があります。そうしないと、異常な転送が発生します。

nginx で proxy_pass プロキシ転送を設定するときに、proxy_pass の後の URL に / を追加すると、絶対ルート パスを意味します。
/ がない場合は相対パスを意味し、一致するパス部分もプロキシされます。

次の 4 つの状況にそれぞれ http://192.168.1.1/proxy/aerchi.html を使用してアクセスすると仮定します。

最初のもの:

場所 /proxy/ {
プロキシパス http://127.0.0.1/;
}

URL へのプロキシ: http://127.0.0.1/aerchi.html

2 番目のタイプ (最初のタイプと比較して、末尾の / が 1 つ少ない)

場所 /proxy/ {
プロキシパス http://127.0.0.1;
}

URL へのプロキシ: http://127.0.0.1/proxy/aerchi.html

3番目のタイプ:

場所 /proxy/ {
プロキシパス http://127.0.0.1/aaa/;
}

URL へのプロキシ: http://127.0.0.1/aaa/aerchi.html

4 番目のタイプ (3 番目のタイプと比較して、末尾の / が 1 つ少ない)

場所 /proxy/ {
プロキシパス http://127.0.0.1/aaa;
}

URL へのプロキシ: http://127.0.0.1/aaaaerchi.html

シナリオ2: ビジネス上のニーズにより、フロントエンドコードのセットを2つのバックエンドアドレスにマッピングする必要があるため、インターフェース上で区別して転送する必要があり、転送中に識別マークを削除する必要があります。

成し遂げる:

サーバー{
  0.0.0.0:8204 をリッスンします。
  server_name ローカルホスト;
  #静的ページ ディレクトリ ルート E:\xxxxxxx;
  #デフォルトのホームページインデックス /index.html;
  proxy_set_header ホスト $http_host;       
  proxy_set_header X-Real-IP $remote_addr;       
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  #プロキシクッキーパス /* /*;
  クライアントの最大ボディサイズは100mです。
    
  location ~*/wx/(.*) {#インターフェースに/wx/#が含まれているかどうかに基づいて動的ページを区別し、処理のためにTomcatに渡します。if (!-e $request_filename) {
        proxy_pass http://127.0.0.1:8091/$1;#バックエンドに行くときは、/wxを削除する必要があります}
  }
  位置 / {
    # ユーザーブラウザのキャッシュ設定の場所 ~* \.(css|js|jpg|jpeg|gif|png|swf|htm|html|json|xml|svg|woff|ttf|eot|map|ico)$ {
      有効期限 -1;
      if (-f $リクエストファイル名) {
        壊す;
      }
    }
    # 動的ページ。処理のためにTomcatに渡されます。if (!-e $request_filename) {
      プロキシパス http://127.0.0.1:8092;
    #プロキシクッキーパス /* /*;
    }
  }

  エラーページ 500 502 503 504 /50x.html;
  場所 = /50x.html {
    ルートhtml;
  }
}

特記事項:

1. proxy_set_header ホスト $http_host;

リクエスト ヘッダーは変更されません。

2. proxy_set_header ホスト ホスト。クライアント要求ヘッダーにこのヘッダーが含まれていない場合、バックエンド サーバーに渡される要求にはこのヘッダーが含まれません。この場合、ホストが使用されます。クライアント要求ヘッダーにこのヘッダーが含まれていない場合、バックエンド サーバーに渡される要求にもこのヘッダーは含まれません。 この場合、ホストが使用されます。クライアント要求ヘッダーにこのヘッダーが含まれていない場合、バックエンド サーバーに渡される要求にもこのヘッダーは含まれません。この場合、ホスト変数が使用されます。その値は、リクエストに「Host」リクエスト ヘッダーが含まれている場合は「Host」フィールドの値であり、リクエストに「Host」リクエスト ヘッダーが含まれていない場合は仮想ホストのプライマリ ドメイン名です。

3. proxy_set_header ホスト ホスト: host:host:proxy_port;

サーバー名は、バックエンド サーバーのポートとともに渡すことができます。

4. リクエスト ヘッダーの値が空の場合、リクエスト ヘッダーはバックエンド サーバーに送信されません。

proxy_set_header Accept-Encoding "";

5. ユーザーの実際のIPアドレスがバックエンドサーバーに転送されます。

proxy_set_header ホスト $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;

シナリオ3: 前のコードはVueで実装されています。Vueは特定のページを持たず、/xx/xxを通じてリソースにアクセスします。このとき、バックグラウンドインターフェースと区別する必要があります。

成し遂げる:

これらは「#」などの特殊文字で区別できます。# を含むリクエストは、デフォルトでは静的リソースです。

場所 ~* \.(#|css|js|jpg|jpeg|gif|png|swf|htm|html|json|xml|svg|woff|ttf|eot|map|ico)$ {
  有効期限 -1;
  if (-f $リクエストファイル名) {
    壊す;
  }
}

シナリオ4: サーバーの制限により、データベースアクセスにはnginx転送が必要

成し遂げる:

ストリーム {
  アップストリームクラウドソケット
    ハッシュ $remote_addr は一貫しています。
    サーバー データベースの実際の IP:3306 weight=5 max_fails=3 fail_timeout=30 秒;
  }
 
 サーバー{
    listen 127.0.0.1:8058; #ローカルプロキシポート proxy_connect_timeout 10s;
    proxy_timeout 300s;#クライアントとプロキシサービス間のタイムアウトを設定します。5分以内に操作がない場合、自動的に切断されます。
    proxy_pass クラウドソケット;
  }

}

特別な注意:

ストリームはhttpと同じレベルなので、httpに入れないでください。

シナリオ5: ドメイン名にアクセスするときに、別のアドレスにリダイレクトする必要がある

成し遂げる:

サーバー{
  7000を聴く;
  server_name ローカルホスト;
  クライアントの最大ボディサイズは100mです。

  場所 = / {
    ^(.*) https://www.baidu.com を永久に書き換えます。
  }
}

特別な注意:

最後にこのルールが一致したら、新しい場所URIルールの一致を続行します
break このルールは一致後に終了し、それ以上のルールは一致しません
リダイレクトは302一時リダイレクトを返します
permanentは301パーマネントリダイレクトを返します

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ドメイン名を指定されたポートに転送するようにNginxを設定する方法
  • Nginxドメイン名転送の実装
  • nginx フォワード プロキシを使用してイントラネット ドメイン名転送プロセス分析を実装する
  • Nginxリバースプロキシはイントラネットドメイン名転送に使用されます
  • 複数のドメイン名に対する Nginx リバース プロキシを使用した HTTP および HTTPS サービスの実装
  • nginx + セカンダリドメイン名 + https サポートを使用する
  • Nginxはドメイン名のアクセス方法を定義しています
  • ドメイン名を介してプロジェクトにアクセスするnginx + tomcatの例

<<:  Web面接におけるJS事前解析と変数プロモーションの違い

>>:  ノードをMySQLデータベースに接続する際に発生する問題と解決策

推薦する

GolangでMySQLデータベースを操作するための実装コード

序文Golang は、SQL データベースにアクセスするための database/sql パッケージ...

JavaScript は詳細なコードで星座クエリ機能を実装します

目次1. タイトル2. コード3. 結果IV. 結論1. タイトルテキスト ボックスに誕生日の値を入...

Ubuntu 16.04 64 ビット版の VMware Tools のインストールと構成のグラフィック チュートリアル

この記事では、VMware Toolsのインストールと構成に関するグラフィックチュートリアルを参考と...

CSS3 における構造擬似クラスセレクターと擬似要素セレクターの使い方の詳細な説明

構造擬似クラスセレクタの紹介構造擬似クラスセレクターは、いくつかの特殊効果を処理するために使用されま...

JavaScript の組み込み Date オブジェクトの詳細な説明

目次日付オブジェクト日付オブジェクトの作成新しい日付()日付を取得する()取得日()月を取得する()...

HTMLでのフォーム送信の実装

フォーム送信コード1. ソースコード分析 <!DOCTYPE html> <htm...

JavaScript の Set データ構造の詳細な説明

目次1. セットとは何か2. セットコンストラクタ2.1) 配列2.2) 文字列2.3) 議論2.4...

MySQL データベース SELECT クエリ式分析

データ管理の大部分は検索であり、SELECT はその大部分を占めています。 SELECT selec...

HTML の相対パス (Relative Path) と絶対パス (Absolute Path) の詳細な理解

私は 1 年以上 Java Web 開発に携わっており、HTML または JSP ページの作成は避け...

JS での Reduce() メソッドの使用の概要

目次1. 文法2. 例3. その他の関連方法長い間、reduce() メソッドの具体的な使い方を理解...

MySQL における int の最大値の詳細な説明

導入2日前に見た問題について詳細に書きます。バイトコンピューターがバイナリに基づいていることは誰もが...

Dockerカスタムネットワーク実装

目次1. コンテナ相互接続を実現するためにネットワークをカスタマイズする2. ネットワーク接続1. ...

Linuxでスクリーンショットを撮って編集するための最高のツール

メインのオペレーティング システムを Windows から Ubuntu に切り替えたとき、最初に考...

キャンバスをベースにした超クールな水光効果を実現

この記事の例では、キャンバスをベースにした超クールな水の光の効果を実装するための具体的なコードを参考...

Navicat による MySQL パーティショニングの実践

MySQLのパーティショニングは、非常に大きなテーブルを管理するのに役立ちます。MySQLのパーティ...