本記事ではVirtualhostを使って1つのサーバーでサブドメインを公開する手順を解説する。
1つのサーバーで、複数ドメインのサイトを表示できる機能を持つのがVirtualHost。
前提条件
本記事では以下の環境を前提としている。
Linux 環境 | |
OS | Debian 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 80 | HTTPポートをリッスン |
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 80 | HTTPポートをリッスン |
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の内容>
- Nginxのログフォーマット設定と出力ログの見方を解説
- Nginxを再起動前にコマンドで文法チェックや設定誤りを確認をする方法
- [Nginx]オレオレCA認証局でSSL通信をする手順。サーバ証明書・秘密鍵・証明書署名要求の作成方法
- [Nginx]オレオレCA認証局を利用したクライアント証明書通信をする手順
- Nginxのログ一覧・ログ設定・ログ出力先の確認・設定方法を解説
- NginxでBasic認証の設定する方法
- Nginxの設定ファイル(.conf)の書き方と設定方法
- Nginxでリバースプロキシの構築・設定方法
- NginxでSSL設定してHTTPS通信をする手順
- NginxのVirtualhostを使って1つのサーバーでサブドメインを公開する手順
- [Nginx] サブディレクトリのアクセスを異なるWebサーバーにアクセスを振り分ける方法