#author("2025-03-20T02:45:15+09:00;2025-03-19T11:46:39+09:00","default:tanopro","tanopro")
#author("2025-03-20T02:46:23+09:00;2025-03-19T11:46:39+09:00","default:tanopro","tanopro")
#html{{
<h1 style="color: red; background-color: #FFFFCC; padding: 20px;">
Nginxのバーチャルホスト
</h1>

<div class="alert alert-warning" role="alert">
Nginxでバーチャルホストを設定する方法
</div>
}}

//----------------------------------------
#contents
//----------------------------------------

//----------------------------------------
// 用語の定義
* バーチャルホストとは? [#definition]

-[[バーチャルホスト]]を参照。

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

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


//----------------------------------------
** Nginxでバーチャルホストを設定する方法 [#s182a3af]

Ubuntu 24.04で、Nginxのバーチャルホストを設定します。


//----------------------------------------
** バーチャルホスト用のディレクトリー作成 [#edff28b0]

Linuxでは習慣的に「/var/www/html」にWebサイトの公開データを置きます。
しかし、[[ディレクトリトラバーサル]]を防ぐために、「/var/www」に、バーチャルホスト用のディレクトリーを作成します。

- /var/www/mydomain1.com
- /var/www/mydomain2.net
とか
- /var/www/sub1.mydomain1.com
- /var/www/sub2.mydomain1.com
のような構成にします。

 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


//----------------------------------------
** ダミーページの用意 [#re74413c]

表示確認用のダミーページを作成しておきます。

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の設定ファイルを作成 [#b9b8516a]

「/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;
     }
 }


//----------------------------------------
** シンボリックリンクの作成 [#z6d09259]

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/


//----------------------------------------
** 設定ファイルの文法確認 [#ocde6a9c]

シンボリックリンクを作成したら、Nginx の設定に問題がないかテストします。

 sudo nginx -t

バーチャルホストの設定ファイルの内容に誤りがあれば訂正しておきます。


//----------------------------------------
** Nginxの再起動 [#w0a17e55]

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

 sudo systemctl restart nginx


//----------------------------------------
** Webブラウザーで確認 [#e6119132]

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

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

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


//----------------------------------------
* SSLの設定 [#pab63262]

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

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


//----------------------------------------
// *Amazon [#amazon]
#html{{

}}


//----------------------------------------
* 関連 [#i0396ebc]
//----------------------------------------

-[[Nginx]]
-[[Let's Encrypt]]
-[[DNS]]
-[[SSL]]
-[[TLS]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS