Nginx 仮想ホスト (IP ベース) を構成する 3 つの方法の詳細な説明

Nginx 仮想ホスト (IP ベース) を構成する 3 つの方法の詳細な説明

Nginx は、IP ベースの仮想ホスト構成、ポート ベースの仮想ホスト構成、ドメイン名ベースの仮想ホスト構成の 3 つの仮想ホスト構成方法をサポートしています。

Nginx 仮想ホストを構成する 3 つの方法 (ポートベース) の詳細な説明 https://www.jb51.net/article/14977.htm

Nginx 仮想ホストを構成する 3 つの方法の詳細な説明 (ドメイン名に基づく) https://www.jb51.net/article/14978.htm

1. IPベースの仮想ホスト構成

同じサーバーに複数の IP がある場合は、IP ベースの仮想マシン ホスト構成を使用して、異なるサービスを異なる IP にバインドできます。

1.1 サーバーの IP アドレスが 192.168.2.150 であると仮定して、まず ifconfig を使用して、他の 3 つの IP を同じネットワーク インターフェイスにバインドします。

[root@localhost ~]# ifconfig ens33:1 192.168.2.151/24 アップ
[root@localhost ~]# ifconfig ens33:2 192.168.2.152/24 アップ
[root@localhost ~]# ifconfig ens33:3 192.168.2.153/24 アップ
[root@localhost ~]# ifconfig
ens33: flags=4163<UP、BROADCAST、RUNNING、MULTICAST> mtu 1500
 inet 192.168.2.106 ネットマスク 255.255.255.0 ブロードキャスト 192.168.2.255
 inet6 fe80::2a8d:be6:a4a8:ea0 プレフィックス長 64 スコープID 0x20<リンク>
 ether 00:0c:29:16:90:ae txqueuelen 1000 (イーサネット)
 RXパケット 1220 バイト 87955 (85.8 KiB)
 RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0
 TXパケット 206 バイト 23755 (23.1 KiB)
 TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0

ens33:1: flags=4163<UP、ブロードキャスト、実行中、マルチキャスト> mtu 1500
 inet 192.168.2.151 ネットマスク 255.255.255.0 ブロードキャスト 192.168.2.255
 ether 00:0c:29:16:90:ae txqueuelen 1000 (イーサネット)

ens33:2: flags=4163<UP、ブロードキャスト、実行中、マルチキャスト> mtu 1500
 inet 192.168.2.152 ネットマスク 255.255.255.0 ブロードキャスト 192.168.2.255
 ether 00:0c:29:16:90:ae txqueuelen 1000 (イーサネット)

ens33:3: flags=4163<UP、ブロードキャスト、実行中、マルチキャスト> mtu 1500
 inet 192.168.2.153 ネットマスク 255.255.255.0 ブロードキャスト 192.168.2.255
 ether 00:0c:29:16:90:ae txqueuelen 1000 (イーサネット)

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
 inet 127.0.0.1 ネットマスク 255.0.0.0
 inet6 ::1 プレフィックス長 128 スコープID 0x10<ホスト>
 ループ txqueuelen 1 (ローカル ループバック)
 RXパケット 72バイト 6252 (6.1 KiB)
 RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0
 TXパケット 72バイト 6252 (6.1 KiB)
 TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0

1.2 3つのIPに対応するドメイン名は次のとおりです。テストしやすいようにホストのホストファイルを設定します。

[root@localhost ~]# vim /etc/hosts
[root@localhost ~]# cat /etc/hosts
127.0.0.1 ローカルホスト ローカルホスト.ローカルドメイン ローカルホスト4 ローカルホスト4.ローカルドメイン4
::1 ローカルホスト ローカルホスト.ローカルドメイン ローカルホスト6 ローカルホスト6.ローカルドメイン6
192.168.2.151 www.test151.com
192.168.2.152 www.test152.com
192.168.2.153 www.test153.com

DNS ポーリングの状況をシミュレートできます。

注意: hostsファイルを設定したら、必ず次のコマンドを実行して有効にしてください。

1. Windowsでcmdを使用してコマンドラインを入力します。

C:\Users\1234>ipconfig /flushdns

Windows IP 構成により、DNS 解決キャッシュが正常にフラッシュされました。

1.3 ウェブページを保存するための仮想ホストのルートディレクトリを作成し、ホームページファイルindex.htmlを作成します。

[root@localhost /]# mkdir -p /data/www
[root@localhost /]# cd /data/www
[root@localhost www]# mkdir 151
[root@localhost www]# mkdir 152
[root@localhost www]# mkdir 153
[root@localhost www]# echo "192.168.2.151" > 151/index.html
[root@localhost www]# echo "192.168.2.152" > 152/index.html
[root@localhost www]# echo "192.168.2.153" > 153/index.html
[root@localhost www]# ls
151 152 153

1.4 nginx.confを変更し、仮想ホスト設定ファイルをメインファイルに含める

[root@localhost /]# cd /usr/local/nginx/conf/
[root@localhost conf]# ls
fastcgi.conf fastcgi_params koi-utf mime.types nginx.conf scgi_params uwsgi_params win-utf
fastcgi.conf.default fastcgi_params.default koi-win mime.types.default nginx.conf.default scgi_params.default uwsgi_params.default
[root@localhost conf]# vim nginx.conf

nginx.confファイルの最後に次の設定を追加します。

# httpセクションで次のコンテンツを見つけ、各行の先頭の「#」を削除します
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
   '$status $body_bytes_sent "$http_referer" '
   '"$http_user_agent" "$http_x_forwarded_for"';

# 以下のように、構成ファイルの末尾にある最後の「}」の前に次のステートメントを追加します。 include vhost/*.conf;
}

1.5 各IPの設定ファイルを編集する(各仮想ホストの設定ファイル)

[root@localhost conf]# mkdir -p vhost
[root@localhost conf]# cd vhost/
[root@localhost vhost]# cat www.test151.conf
 サーバー{
 192.168.2.151:80 を聞きます。
 # 実際のドメイン名に設定します。各仮想ホスト設定ファイルのドメイン名は同じです #server_name www.test.com;

 access_log /data/logs/www.test151.com.log メイン;
 エラーログ /data/logs/www.test151.com.error.log;

 位置 / {
  ルート /data/www/151;
  インデックス index.html index.htm;
 }
 }

[root@localhost vhost]# cat www.test152.conf
 サーバー{
 192.168.2.152:80 を聞きます。
 # 実際のドメイン名に設定します。各仮想ホスト設定ファイルのドメイン名は同じです #server_name www.test.com;

 access_log /data/logs/www.test152.com.log メイン;
 エラーログ /data/logs/www.test152.com.error.log;

 位置 / {
  ルート /data/www/152;
  インデックス index.html index.htm;
 }
 }

[root@localhost vhost]# cat www.test153.conf
 サーバー{
 192.168.2.153:80 を聞きます。
 # 実際のドメイン名に設定します。各仮想ホスト設定ファイルのドメイン名は同じです #server_name www.test.com;

 access_log /data/logs/www.test153.com.log メイン;
 エラーログ /data/logs/www.test153.com.error.log;

 位置 / {
  ルート /data/www/153;
  インデックス index.html index.htm;
 }
 }

1.6 ログファイルを作成します。そうしないと nginx を起動できません。

[root@localhost /]# mkdir -p /data/logs
[root@localhost /]# touch /data/logs/www.test151.com.log
[root@localhost /]# touch /data/logs/www.test151.com.error.log
[root@localhost /]# touch /data/logs/www.test152.com.log
[root@localhost /]# touch /data/logs/www.test152.com.error.log
[root@localhost /]# touch /data/logs/www.test153.com.log
[root@localhost /]# touch /data/logs/www.test153.com.error.log
[root@localhost /]# ls /data/logs/
www.test151.com.error.log www.test152.com.error.log www.test153.com.error.log
www.test151.com.log www.test152.com.log www.test153.com.log

1.7 nginxを起動する前に設定ファイルをテストする

[root@localhost /]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -t
nginx: 設定ファイル /usr/local/nginx/conf/nginx.conf の構文は正常です
nginx: 設定ファイル /usr/local/nginx/conf/nginx.conf のテストが成功しました
# nginxを起動する
[root@localhost sbin]# ./nginx

1.8 テストファイル

[root@localhost sbin]# curl www.test151.com
192.168.2.151
[root@localhost sbin]# curl www.test152.com
192.168.2.152
[root@localhost sbin]# curl www.test153.com
192.168.2.153

付録: 設定中に発生した問題

1. 設定ファイルのテスト中に発生した問題

[root@localhost sbin]# ./nginx -t
nginx: [emerg] /usr/local/nginx/conf/nginx.conf:122 に予期しない "}" があります
nginx: 設定ファイル /usr/local/nginx/conf/nginx.conf のテストに失敗しました

解決策: 次の文にセミコロンを追加するのを忘れました

vhost/*.conf をインクルードします。

2. curl www.test*.comを使用してテストすると、常に同じ結果が得られます。

解決策: server_name の後に IP アドレスを書き込まないでください。server_name の後に追加できるのはドメイン名のみです。

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

以下もご興味があるかもしれません:
  • Nginxリバースプロキシに基づく実IP取得の問題の詳細な説明
  • nginx サーバーの IP とトラフィック統計を取得する Python 実装例
  • CDN アクセラレーションを使用する際にユーザーの IP を取得するように Nginx を構成する方法の詳細な説明
  • nginx を使用して同じドメイン名で複数の Vue プロジェクトをデプロイし、リバース プロキシを使用する方法
  • nginx プロキシでの複数の 302 応答の解決策 (nginx Follow 302)
  • nginxリバースプロキシサービスは、設定ファイルのエラーによりリソースにアクセスするときに404エラーを引き起こします。
  • nginx が複数のプロキシ層を通過して実際の送信元 IP を取得するプロセスの詳細な説明

<<:  js クロージャとガベージ コレクション メカニズムの例の詳細な説明

>>:  MySQLはトリガーを使用してデータベース内のテーブルの行制限を解決します。詳細な説明と例

推薦する

jsのイベントオブジェクトを深く理解しましょう

JS でよく使用されるイベントは次の通りです。ページイベント: load;フォーカス イベント: フ...

VMware 仮想マシンでの Centos8 ブリッジの静的 IP 設定方法

1. ネットワーク接続方法がブリッジされていることを確認する物理ネットワーク接続ステータスのコピーを...

HTMLボタンを中央に配置する方法

HTML ボタン自体を中央に配置するにはどうすればよいでしょうか? このアイデアは簡単に見つかります...

MySQL マスタースレーブレプリケーションでエラーをスキップする方法

1. 従来のbinlogマスタースレーブレプリケーション、エラー報告をスキップする方法 mysql&...

HTML テキストフォーマットの簡単な例 (詳細な説明)

1. テキストの書式設定: この例では、HTML ファイル内のテキストを書式設定する方法を示します...

MySQLクライアント認証後の接続失敗の問題に対する完璧なソリューション

MySQL 環境をローカル (192.168.1.152) にデプロイし、リモート クライアント 1...

Mysql InnoDBとMyISAMの違いの分析

MySQL は、myisam、innodb、memory、archive、example など、多く...

JS で配列をループする 4 つの方法のまとめ

この記事では、配列を走査する 4 つの方法を比較してまとめます。 for ループ: for (let...

HTML2 キャンバス SVG が認識されない場合の解決策

ウェブページを画像としてキャプチャする新機能があったので、人気のhtml2canvasを使ってみまし...

MySQLにおける遅いSQLの最適化の方向性について詳しく話しましょう

目次序文SQL文の最適化遅いクエリSQLを記録する設定を変更する方法スロークエリログを表示するSQL...

Vue で ToDo アプリケーションを実装する例

背景まず最初に、私はフロントエンド開発の専門家ではないことを述べておきたいと思います。私の以前のコン...

Nginx リバース プロキシを使い始める

目次概要リバースプロキシの役割Nginx リバース プロキシ イントラネット侵入 8081 ポートの...

mysql-joinsの具体的な使用方法

目次結合構文: 1. InnerJOIN: (内部結合) 2. LeftJOIN: (左結合) 3....

MySQL 永続統計の詳細な説明

1. 永続的な統計情報の重要性:統計は、MySQL が実行プランを生成するためのガイドとして使用され...

Tomcat CentOS インストールプロセス図

Tomcat CentOS インストールこのインストール チュートリアルでは、次の内容について説明し...