Nginxのバーチャルホスト

バーチャルホストとは?

Nginxでバーチャルホストの設定を行なえば、1台のWebサーバーで複数のWebサイトを運営できます。
(例)

  1. mydomain1.com
  2. mydomain2.net
  3. mydomain3.org

同様に1台のWebサーバーで、複数のサブドメインのWebサイトを運用できます。
(例)

  1. sub1.mydomain1.com
  2. sub2.mydomain1.com
  3. sub3.mydomain1.com

Nginxでバーチャルホストを設定する方法

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>

Nginxの設定ファイルを作成

「/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の再起動

Nginxを再起動して、作成したバーチャルホストの設定を反映させます。

sudo systemctl restart nginx

Webブラウザーで確認

Webブラウザーで「http://sub1.mydomain1.com」にアクセスして、テスト用のページが表示されるか、確認します。
表示されたらOKです。

表示されなければ、DNSの設定も確認します。
もう一度、全ての内容を確認して、間違いがあれば訂正します。

これでNginxで、バーチャルホストの設定ができました。

SSLの設定

SSL / TLS に関しては、Let's Encryptで設定します。

(手動で設定することも可能です。)

関連


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS