Nginxでバーチャルホストの設定を行なえば、1台のWebサーバーで複数のWebサイトを運営できます。
(例)
同様に1台のWebサーバーで、複数のサブドメインのWebサイトを運用できます。
(例)
Ubuntu 24.04で、Nginxのバーチャルホストを設定します。
Linuxでは習慣的に「/var/www/html」にWebサイトの公開データを置きます。
しかし、ディレクトリトラバーサルを防ぐために、「/var/www」に、バーチャルホスト用のディレクトリーを作成します。
sudo mkdir -p /var/www/example.com/html sudo chown -R $USER:$USER /var/www/example.com/html sudo chmod -R 755 /var/www/example.com
表示確認用のダミーページを作成しておきます。
index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome</title> </head> <body> <h1>Hello, world!</h1> <p>Thank you.</p> </body> </html>
「/etc/nginx/sites-available」にバーチャルホストの設定ファイル「sub1.mydomain1.com.conf」を作成します。
cd /etc/nginx/sites-available sudo nano sub1.mydomain1.com.conf
以下のような内容を書きこみます。
server { listen 80; server_name sub1.mydomain1.com; root /var/www/sub1.mydomain1.com; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } # PHP-FPM の設定 location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # .htaccess の無効化(不要なら削除) location ~ /\.ht { deny all; } }
Nginxでバーチャルホストは「/etc/nginx/sites-enabled」にある設定ファイルが読み込まれて、有効化されます。
sites-available に作成した設定ファイルを sites-enabled に反映するため、シンボリックリンク(エイリアス、ショートカットのこと)を作成します。
シンボリックリンクを作成するため、次のコマンドを実行してください。
sudo ln -s /etc/nginx/sites-available/sub1.mydomain1.com /etc/nginx/sites-enabled/
直接ファイルを作成しないで、ショートカットにするのは、サイトの公開/非公開を簡単に切り替えることができるようにするためです。
シンボリックリンクが正しく作成されたか確認するには、次のコマンドを実行します。
ls -l /etc/nginx/sites-enabled/
シンボリックリンクを作成したら、Nginx の設定に問題がないかテストします。
sudo nginx -t
バーチャルホストの設定ファイルの内容に誤りがあれば訂正しておきます。
Nginxを再起動して、作成したバーチャルホストの設定を反映させます。
sudo systemctl restart nginx
Webブラウザーで「http://sub1.mydomain1.com」にアクセスして、テスト用のページが表示されるか、確認します。
表示されたらOKです。
表示されなければ、DNSの設定も確認します。
もう一度、全ての内容を確認して、間違いがあれば訂正します。
これでNginxで、バーチャルホストの設定ができました。
SSL / TLS に関しては、Let's Encryptで設定します。
(手動で設定することも可能です。)