nginx で仮想ホストを構成するための詳細な手順

nginx で仮想ホストを構成するための詳細な手順

仮想ホストは、インターネット上で実行されているサーバー ホストを複数の「仮想」ホストに分割する特殊なソフトウェアおよびハードウェア テクノロジを使用します。各仮想ホストは、独立したドメイン名と完全なインターネット サーバー機能 (WWW、FTP、電子メールなど) を備えた独立した Web サイトにすることができます。同じホスト上の仮想ホストは完全に独立しています。ウェブサイト訪問者の観点から見ると、各仮想ホストはスタンドアロン ホストとまったく同じです。

ここに画像の説明を挿入

仮想ホストを使用すると、実行する Web サイトごとに個別の Nginx サーバーを用意したり、個別の Nginx プロセス セットを実行したりする必要がありません。仮想ホストは、同じサーバー上および同じ Nginx プロセス セット上で複数の Web サイトを実行する機能を提供します。

仮想ホストを構成する方法は 3 つあります。

  • ドメイン名ベースの仮想ホスティング: 異なるドメイン名、同じ IP (この方法が最も広く使用されています)
  • ポートベースの仮想ホスティング: 異なるサイトのコンテンツを区別するためにドメイン名や IP アドレスを使用する代わりに、異なる TCP ポート番号が使用されます。
  • IPアドレスに基づく仮想ホスト: 異なるドメイン名、異なるIPアドレス(ネットワークインターフェースを追加する必要があり、あまり使用されていない) IPアドレスに基づく

ここに画像の説明を挿入

方法 1: 複数のネットワーク カードと複数の IP

2つの物理ネットワークカード、2つのIP

# 2 つの物理ネットワーク カード ens32 と ens34
[root@nginx ネットワーク スクリプト]# ifconfig ens32 | awk 'NR==2 {print $2}'  
192.168.126.41

[root@nginx ネットワーク スクリプト]# ifconfig ens34 | awk 'NR==2 {print $2}'  
192.168.126.42

設定ファイルを編集して、各IPに基づいて仮想ホストを作成します。

# /etc/nginx/conf.d/default.conf 設定ファイルに影響が及ばないようにするには、名前を [root@nginx ~] に変更します。# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default	 

[root@nginx ~]# vim /etc/nginx/conf.d/ip.conf
# ens32 ネットワークカードに対応する仮想ホストサーバー {
  192.168.126.41:80 を聞きます。

  位置 / {
    ルート /ip_ens32;
    インデックス index.html;
  }
}

# 仮想ホストサーバーに対応するens34ネットワークカード{
  192.168.126.42:80 を聞きます。

  位置 / {
    ルート /ip_ens34;
    インデックス index.html;
  }
}

仮想ホストのWebページファイルディレクトリとファイルを作成する

[root@nginx ~]# mkdir /ip_ens32
[root@nginx ~]# mkdir /ip_ens34

[root@nginx ~]# echo "ens32" > /ip_ens32/index.html
[root@nginx ~]# echo "ens34" > /ip_ens34/index.html

設定ファイルの構文を確認してください

[root@nginx ~]# nginx -t
nginx: 設定ファイル /etc/nginx/nginx.conf の構文は正常です
nginx: 設定ファイル /etc/nginx/nginx.conf のテストが成功しました

nginx サービスを再読み込みする

[root@nginx ~]# systemctl reload nginx

テスト

[root@nginx ~]# カール 192.168.126.41
ens32
[root@nginx ~]# カール 192.168.126.42
ens34 

ここに画像の説明を挿入ここに画像の説明を挿入

方法 2: 複数の IP アドレスを持つ単一のネットワーク カード

1つの物理ネットワークカードに複数のIPを設定する

ip addr add IP/MASK dev ネットワークカード名# delete ip addr del IP/MASK dev ネットワークカード名

残りの手順は、上記のマルチNICマルチIP構成と同じです。

ポートベース

ここに画像の説明を挿入

ドメイン名が使用できない、または存在しない場合に社内で主に使用されます

構成

[root@nginx ~]# vim /etc/nginx/conf.d/port.conf
サーバー{
  聞く 81;

  位置 / {
    ルート /port_81;
    インデックス index.html;
  }
}

サーバー{
  聞く 82;

  位置 / {
    ルート /port_82;
    インデックス index.html;
  }
}

[root@nginx ~]# mkdir /port_{81..82}
[root@nginx ~]# echo "81" > /port_81/index.html
[root@nginx ~]# echo "82" > /port_82/index.html

[root@nginx ~]# nginx -t
nginx: 設定ファイル /etc/nginx/nginx.conf の構文は正常です
nginx: 設定ファイル /etc/nginx/nginx.conf のテストが成功しました
[root@nginx ~]# systemctl reload nginx

テスト

[root@nginx ~]# カール 192.168.126.41:81
81
[root@nginx ~]# カール 192.168.126.41:82
82 

ここに画像の説明を挿入ここに画像の説明を挿入

ドメイン名に基づく

ここに画像の説明を挿入

構成

通常、1 つのドメイン名は 1 つの構成ファイルに対応するため、管理が容易です。

[root@nginx ~]# vim /etc/nginx/conf.d/test1.dxk.com.conf
サーバー{
  聞く 80;
  サーバー名 test1.dxk.com;

  位置 / {
    ルート /test1;
    インデックス index.html;
  }
}

[root@nginx ~]# vim /etc/nginx/conf.d/test2.dxk.com.conf
サーバー{
  聞く 80;
  サーバー名 test2.dxk.com;

  位置 / {
    ルート/test2;
    インデックス index.html;
  }
}

[root@nginx ~]# mkdir /test{1..2}
[root@nginx ~]# echo "test1" > /test1/index.html
[root@nginx ~]# echo "test2" > /test2/index.html

[root@nginx ~]# nginx -t
nginx: 設定ファイル /etc/nginx/nginx.conf の構文は正常です
nginx: 設定ファイル /etc/nginx/nginx.conf のテストが成功しました

[root@nginx ~]# systemctl reload nginx

テスト

# ドメイン名解決を設定する [root@nginx ~]# echo -e "192.168.126.41 test1.dxk.com\n192.168.126.41 test2.dxk.com" >> /etc/hosts
[root@nginx ~]# cat /etc/hosts
127.0.0.1 ローカルホスト ローカルホスト.ローカルドメイン ローカルホスト4 ローカルホスト4.ローカルドメイン4
::1 ローカルホスト ローカルホスト.ローカルドメイン ローカルホスト6 ローカルホスト6.ローカルドメイン6
192.168.126.41 テスト1.dxk.com
192.168.126.41 テスト2.dxk.com

[root@nginx ~]# curl test1.dxk.com
テスト1
[root@nginx ~]# curl test2.dxk.com
テスト2 

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

問題は次の通りです:

ドメイン名の解決が正しく構成されていない場合、間違ったドメイン名にアクセスしたときに Web ページのコンテンツが返されます (間違ったドメイン名の仮想ホストが構成されていません)。

[root@nginx ~]# vim /etc/hosts
192.168.126.41 テスト1.dxk.com
192.168.126.41 test3.dxk.com # これは test2.dxk.com であるはずですが、誤って記述されており、test3.dxk.com ドメイン名に対応する仮想ホストが存在しません。

間違ったドメイン名にアクセスする

[root@nginx ~]# curl test3.dxk.com
テスト1

# ご覧のとおり、Webページの情報は引き続き返されます

ドメイン名解決を設定する際に、ドメイン名が間違って記述されていても、IP は正しいためです。この場合、サーバーはデフォルトで、IP とポート 80 に一致する最初の仮想ホストの Web ページ情報をクライアントに返します。

[root@nginx ~]# ll /etc/nginx/conf.d/
-rw-r--r--。1 ルート ルート 112 7月 3日 21:23 test1.dxk.com.conf
-rw-r--r--。1 ルート ルート 112 7月 3日 21:22 test2.dxk.com.conf

これは注目すべきことだ

nginx 仮想ホストに関するこの記事はこれで終わりです。より関連性の高い nginx 仮想ホストのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。皆様が今後も 123WORDPRESS.COM を応援してくれることを願っています。

以下もご興味があるかもしれません:
  • Nginx で仮想ホストと指定されたアクセス パスを設定する方法
  • Nginx 仮想ホスト設定例 (複数のウェブサイト構成)
  • Nginx 仮想ホストを構成する 3 つの方法 (ドメイン名に基づく)
  • nginx 仮想ホスト設定例の詳細な説明
  • Nginx 仮想ホストの詳細な分析
  • Nginx の仮想ホストに関するあまり知られていない知識のまとめ

<<:  HTML の左右レイアウトのサンプルコード

>>:  CSSセレクターでの正規表現の使用

推薦する

Node.js でのクラスター作成に関する簡単な説明

目次クラスタクラスターの詳細クラスター内のイベントクラスター内のメソッドクラスター内の属性クラスター...

JavaScriptエンジンV8の実行プロセスの詳細な説明

目次1. V8ソース2. V8サービスターゲット3. V8の初期アーキテクチャIV. V8の初期アー...

CSS3 で高さと幅を不定にして垂直と水平に中央揃えするいくつかの方法

1. フレックスレイアウト 。父親 { ディスプレイ: フレックス; コンテンツの中央揃え: 中央;...

フレームセットを使用して複雑なページレイアウトを実装するためのテクニックの概要

コードをコピーコードは次のとおりです。 <html> <!--混合フレームレイアウ...

この記事では、jsのデータ型とデータ構造の世界を紹介します。

目次1. 動的型付けとは何ですか? 2. データ型2.1 プリミティブ型 (6 つのプリミティブ型、...

jQuery で呼吸カルーセル効果を実現

この記事では、呼吸カルーセル効果を実現するためのjQueryの具体的なコードを参考までに共有します。...

Centos7のシステム言語を簡体字中国語に変更する方法

例示するシステムを自分でインストールする場合は、通常、システム言語をカスタマイズできます。ただし、ク...

Linux seqコマンドの使い方

1. コマンドの紹介seq (シーケンス) コマンドは、指定されたステップ サイズに従って、開始番号...

LinuxシステムのAnsible自動運用保守導入方法

Ansible は、Python をベースに開発された新しい自動運用・保守ツールです。 多くの古い運...

MySQL 5.6.37 (zip) ダウンロード インストール 構成 グラフィック チュートリアル

この記事では、MySQL 5.6.37のダウンロード、インストール、設定のチュートリアルを参考までに...

jsは、州、市、地区の3レベルのリンクの非選択ドロップダウンボックスバージョンを実現します。

インターネットで3レベルリンクを検索したところ、すべてオプションで書かれていました。突然、別の方法で...

モバイルの赤い封筒の雨機能ページを実装するための JavaScript HTML

この記事の例では、モバイル紅包雨機能ページを実現するためのHTMLの具体的なコードを共有しています。...

Html/Css (初心者が最初に読むべきガイド)

1. Web標準の意味を理解する - なぜWeb標準を採用するのか***** コンテンツとスタイル...

グリッドはページのレイアウトプランです

<br /> 英語原文: http://desktoppub.about.com/od/...

JavaScriptオフセットは、ウィンドウ内でのマウス座標の取得とモジュールのドラッグを実装します。

オフセットOffset はオフセットです。関連プロパティの offset シリーズを使用すると、次の...