単一の ECS インスタンス上で複数のウェブサイトをホストすることは、Web プレゼンスを管理するための費用対効果の高い方法です。これにより、ソフトウェアの更新、セキュリティ設定、データバックアップなどのタスクを簡素化し、各サイトのニーズに基づいてリソースを柔軟に割り当てることができます。このトピックでは、Nginx を使用して Linux ECS インスタンス上で複数のウェブサイトをホストする方法について説明します。
前提条件
パブリック IP アドレスを持つ ECS インスタンスを作成し、LNMP スタックをデプロイ済みであること。詳細については、「LNMP スタックのデプロイ」または「(未定) Docker を使用した LNMP スタックのデプロイ」をご参照ください。
このチュートリアルでは、複数のウェブサイトをホストするための Nginx 環境をデプロイするワンクリックソリューションを提供しています。コードを実行することで、環境を直接デプロイできます。 ワンクリックで実行
テストウェブサイトの作成
-
LNMP スタックがデプロイされている ECS インスタンスにリモート接続します。
接続方法の詳細については、「Workbench を使用した Linux インスタンスへの接続」をご参照ください。
-
次のコマンドを実行して、ウェブサイトのルートディレクトリに移動します。
cd /usr/share/nginx/html -
次のコマンドを実行して、テストウェブサイト用の 2 つのディレクトリを作成します。
これらのディレクトリには、プロジェクトコード (ウェブサイトコンテンツ) が保存されます。
sudo mkdir Testpage-1 sudo mkdir Testpage-2 -
Testpage-1 ウェブサイトを設定します。
-
次のコマンドを実行して、Testpage-1 ディレクトリに移動します。
cd /usr/share/nginx/html/Testpage-1/ -
次のコマンドを実行して、
index.htmlファイルを作成し、編集します。sudo vim index.html -
iキーを押して挿入モードに入り、次のテストコンテンツを追加します。Test page 1編集後、
Escキーを押し、:wqと入力して Enter キーを押すと、ファイルが保存され、エディタが終了します。
-
-
Testpage-2ウェブサイトを設定します。-
次のコマンドを実行して、
Testpage-2ディレクトリに移動します。cd /usr/share/nginx/html/Testpage-2/ -
次のコマンドを実行して、
index.htmlファイルを作成し、編集します。sudo vim index.html -
iキーを押して挿入モードに入り、次のテストコンテンツを追加します。Test page 2編集後、
Escキーを押し、:wqと入力して Enter キーを押すと、ファイルが保存され、エディタが終了します。
-
Nginx の設定
-
次のコマンドを実行して、
nginx.conf設定ファイルを表示します。cat /etc/nginx/nginx.confhttp{}ブロック内で、includeディレクティブを見つけます。この例では、設定
include /etc/nginx/conf.d/*.conf;は、Nginx が指定されたパスにあるすべての.confファイルからサイト情報を取得することを示しています。include /etc/nginx/conf.d/*.conf;の行は、注目すべき include 設定行であり、/etc/nginx/conf.d ディレクトリからモジュール化された設定ファイルを読み込むために使用されます。http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # /etc/nginx/conf.d ディレクトリからモジュール式の構成ファイルを読み込みます。 # 詳細については、http://nginx.org/en/docs/ngx_core_module.html#include をご参照ください。 include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; } } -
次のコマンドを実行して、
/etc/nginx/conf.dディレクトリに移動します。cd /etc/nginx/conf.d -
Testpage-1ウェブサイト用の Nginx 設定ファイルを作成し、設定します。-
次のコマンドを実行して、設定ファイルを作成し、編集します。
sudo vim Testpage1.conf -
iキーを押して挿入モードに入り、次の内容を追加します。コメントの指示に従い、サーバードメイン名とプロジェクトパスを置き換えてください。
server { listen 80; server_name testpage1.com; # テスト用のドメイン名です。実際のサーバードメイン名に置き換えてください。 #charset koi8-r; access_log /var/log/nginx/testpage1.access.log main; location / { root /usr/share/nginx/html/Testpage-1; # このサイトのルートディレクトリへのパスです。 index index.html index.htm; } #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }編集後、
Escキーを押し、:wqと入力して Enter キーを押すと、ファイルが保存され、エディタが終了します。
-
-
Testpage-2ウェブサイト用の Nginx 設定ファイルを作成し、設定します。-
次のコマンドを実行して、設定ファイルを作成し、編集します。
sudo vim Testpage2.conf -
iキーを押して挿入モードに入り、次の内容を追加します。コメントの指示に従い、サーバードメイン名とプロジェクトパスを置き換えてください。
server { listen 80; server_name testpage2.com; # テスト用のドメイン名です。実際のサーバードメイン名に置き換えてください。 #charset koi8-r; access_log /var/log/nginx/testpage2.access.log main; location / { root /usr/share/nginx/html/Testpage-2; # このサイトのルートディレクトリへのパスです。 index index.html index.htm; } #error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }編集後、
Escキーを押し、:wqと入力して Enter キーを押すと、ファイルが保存され、エディタが終了します。
-
-
次のコマンドを実行して、Nginx サービスを再起動します。
sudo systemctl restart nginx
結果の確認
ローカルマシンで hosts ファイルを編集し、テストドメイン名を ECS インスタンスのパブリック IP アドレスにマッピングします。ファイルを保存した後、ブラウザでウェブサイトを確認できます。
-
http://testpage1.comにアクセスして、Testpage-1サイトのコンテンツを表示します。ページに Test page 1 と表示されます。これは、Testpage-1 ウェブサイトが正しくデプロイされ、アクセス可能であることを示します。
-
http://testpage2.comにアクセスして、Testpage-2サイトのコンテンツを表示します。ページに Test page 2 と表示されます。これは、Testpage-2 ウェブサイトが正しくデプロイされ、アクセス可能であることを示します。
独自のプロジェクトでは、各サイトの設定ファイル内の root ディレクティブが、正しいプロジェクトディレクトリを指していることを確認してください。
次のステップ
ウェブサイトを一般公開し、アクセシビリティとセキュリティを向上させるには、ドメイン名の使用を推奨します。ドメイン名を登録する必要がある場合、またはすでにドメイン名をお持ちの場合は、次の手順に進んでください。
-
ドメイン名を登録します。
手順については、「ドメイン名の登録」をご参照ください。
-
ICP 登録を申請します。
ドメイン名が中国本土の Alibaba Cloud サーバー上でホストされているウェブサイトを指している場合は、ICP 登録を申請する必要があります。手順については、「ICP 登録プロセス」をご参照ください。
-
ドメイン名の名前解決を設定します。
ドメイン名を使用してウェブサイトにアクセスするには、ドメイン名の名前解決が必要です。ドメイン名をインスタンスのパブリック IP アドレスに指定するには、「ウェブサイト解決レコードの追加」をご参照ください。
関連ドキュメント
Windows インスタンスで複数のウェブサイトをホストする方法については、「複数のウェブサイトをホストするための IIS の設定」をご参照ください。