NginxのVirtualhostを使って1つのサーバーでサブドメインを公開する手順

本記事ではVirtualhostを使って1つのサーバーでサブドメインを公開する手順を解説する。
1つのサーバーで、複数ドメインのサイトを表示できる機能を持つのがVirtualHost。

目次

前提条件

本記事では以下の環境を前提としている。

Linux 環境
OSDebian GNU/Linux 12 (bookworm)
ミドルウェアnginx(1.25.5)
ドメイン名
メインmain.libproc.com(52.69.161.215)
サブサブ:sub.libproc.com(52.69.161.215)
ディレクトリ
メイン/usr/share/nginx/html/main.libproc.com
サブ/usr/share/nginx/html/sub.libproc.com

設定方法

 1. サブドメインのDNS設定

まず、サブドメインが正しく動作するためには、DNS設定でサブドメインを設定する必要がある。
`sub.libproc.com`というサブドメインを設定する場合、DNSプロバイダの管理画面で以下のようなAレコードを追加する。

メインドメインmain.libproc.com(52.69.161.215)
サブドメインsub.libproc.com(52.69.161.215)

2. Nginxの設定ファイルを作成

Nginxでサブドメイン用のVirtualHostを設定するための手順を解説する。

a. 設定ファイルの編集

nginx.confのhttpブロックを以下のように修正する。

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    # バーチャルホストの設定ファイルを読み込む
    include /etc/nginx/sites-enabled/*;
}

b. メイン・サブドメイン用の設定ファイルを作成

通常、設定ファイルは `/etc/nginx/sites-available/` ディレクトリに置かれる。

# sudo vi /etc/nginx/sites-available/main.conf

次に、以下の内容を設定ファイル(main.conf)に記述する。

server {
    listen 80 default_server;
    server_name main.libproc.com;

    root /usr/share/nginx/html/main.libproc.com; 
    index index.html;
}

<各ディレクティブの説明>

listen 80HTTPポートをリッスン
server_name main.libproc.com;この設定が `main.libproc.com` のリクエストに対応することを指定
root /usr/share/nginx/html/main.libproc.com;サブドメインのドキュメントルートを指定
# sudo vi /etc/nginx/sites-available/sub.conf

次に、以下の内容を設定ファイル(sub.conf)に記述する。

server {
    listen 80;
    server_name sub.libproc.com;

    root /usr/share/nginx/html/sub.libproc.com; 
    index index.html;
}

<各ディレクティブの説明>

listen 80HTTPポートをリッスン
server_name sub.libproc.com;この設定が `sub.libproc.com` のリクエストに対応することを指定
root /usr/share/nginx/html/sub.libproc.com;サブドメインのドキュメントルートを指定

作成した設定ファイルを反映させる処理をする。
/etc/nginx/nginx.confというファイルにコードを1行追加する。

include /etc/nginx/sites-enabled/*;

 c. シンボリックリンクを作成して有効化

次に設定を有効化するために、`sites-available` から `sites-enabled` ディレクトリにシンボリックリンクを作成する。

# sudo ln -s /etc/nginx/sites-available/sub.conf /etc/nginx/sites-enabled/

3. ドキュメントルートを作成

次に、メイン・サブドメイン用のドキュメントルートディレクトリを作成し、コンテンツを配置する。

# sudo mkdir  /usr/share/nginx/html/main.libproc.com
# echo "<h1>Welcome to main.libproc.com</h1>" | sudo tee 
/usr/share/nginx/html/main.libproc.com/index.html
# sudo mkdir  /usr/share/nginx/html/sub.libproc.com
# echo "<h1>Welcome to sub.libproc.com</h1>" | sudo tee 
/usr/share/nginx/html/sub.libproc.com/index.html

4. Nginxの設定をテスト・再起動

設定が正しいかどうかをテストする。

# sudo nginx -t

エラーがなければ、Nginxを再起動する。

# sudo systemctl restart nginx

これでmain.libproc.comというメインドメイン、sub.libproc.comというサブドメインにアクセスすると、「 3. ドキュメントルートを作成」で作成したコンテンツが表示される。

<main.libproc.comにアクセスしたときのaccess.log>

220.81.75.157 - - [16/Sep/2024:10:31:14 +0000] "GET / HTTP/1.1" 200 31 "-" "Mozilla/5.0 
(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,                         like Gecko) 
Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0" "-"
220.81.75.157 - - [16/Sep/2024:10:31:14 +0000] "GET /favicon.ico HTTP/1.1" 404 555 
"http://main.libproc.com/" "Mozilla/5.0 (Windows NT 10.0; Win                        64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0" "-"

<sub.libproc.comにアクセスしたときのaccess.log>

220.81.75.157 - - [16/Sep/2024:10:31:02 +0000] "GET / HTTP/1.1" 200 31 "-" "Mozilla/5.0 
(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,                         like Gecko) 
Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0" "-"
220.81.75.157 - - [16/Sep/2024:10:31:02 +0000] "GET /favicon.ico HTTP/1.1" 404 555 
"http://sub.libproc.com/" "Mozilla/5.0 (Windows NT 10.0; Win6                        4; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0" "-"

<ドキュメントルートにアクセスしたときに表示されるindex.htmlの内容>

  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次