NginxでVirtualHostを設定した
今回やったこと
- nginxのVirtualHostを使ってhtmlを表示
www.○○○.net
か○○○.net
の複数ドメインを使って自身のhtmlを表示
前提条件
参考
設定は以下3つのサイトを参考させていただきました。 大変助かりました!
- 「さくらのVPS」に「お名前.com」で取得した独自ドメインを割り当てる手順
- nginxのvirtualhostを使って複数ドメインのサイトを作る方法
- プログラミングビギナーNekoteniがあなたに贈る!NginxでVirtual Hostの巻
概要
ざっくりと書くと以下の順番で設定
- お名前.comでドメインを取得
- さくらインターネットでドメインの登録を行い、ネームサーバの確認
- お名前.comでネームサーバの設定
- nginxでvirtualhostの設定
アクセスするときの概要を図にするとこんな感じ
お名前.comでドメインを取得
お名前.comでドメインを取得する。
今回は安くなっていた.net
でドメインを取得した。
さくらインターネットでネームサーバを確認
さくらインターネットの会員メニューへログイン
契約中のドメイン一覧
をクリック
ドメインメニュー
をクリック
ドメインメニューからネームサーバ新規登録
をクリック
ドメインメニューにお名前.comで取得したドメインを入力し、送信をクリック
管理ドメインとネームサーバの一覧でさっき登録したドメインが表示されているので、ゾーン編集をクリック
サーバのIPアドレスを入力して送信するをクリック
ネームサーバが2つ表示されている(タイプNSの行に表示されている)ので、これをお名前.comのネームサーバ設定で使う
お名前.comでネームサーバの設定
お名前ドットコムnaviにアクセスし、ドメイン機能一覧をクリック
ネームサーバの変更をクリック
ドメイン名にチェックを入れ
「2.ネームサーバの選択」-「その他」をクリックし、さくらインターネットで確認したネームサーバを2つ入力し、下にある確認ボタンをクリック
これで自身の端末(自分はmac)でnslookupで名前解決されていることを確認。
server can't find ○○○.net: SERVFAIL
と表示された場合、さくらインターネットかお名前.comで設定の反映に時間がかかっていると思われる。
自分の場合は15分くらいまって再度nslookupを実行すると名前解決された。
nginxでvirtualhostの設定
お名前.comをさくらインターネットの設定が完了したので、nginxの設定をしていく。
virtual host用のデータ配置用のディレクトリを作成
sudo mkdir /home/demo/public_html
sudo mkdir -p /home/demo/public_html/○○○.net/public sudo mkdir -p /home/demo/public_html/○○○.net/log
publicの下に○○○.netにアクセスした時に表示させたいindex.htmlを作成(中身はなんでも)
sudo vi /home/demo/public_html/○○○.net/public/index.html
virtual hostの設定ファイルを作成
sudo vi /etc/nginx/sites-available/○○○.net
内容は以下のような感じで、2つのserverコンテキストにあるserver_name
にそれぞれ表示させたいドメインを書く
/usr/share/nginx/html
や/var/log/nginx
はnginxをインストールしたときにデフォルトディレクトリ
server { listen 80; server_name www.○○○.net; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { root /usr/share/nginx/html; index index.html; } } server { listen 80; server_name ○○○.net; access_log /home/demo/public_html/○○○.net/log/access.log; error_log /home/demo/public_html/○○○.net/log/error.log; location / { root /home/demo/public_html/○○○.net/public/; index index.html; } }
nginxが設定を読み込んでくれるようにシンボリックリンクを作成
sudo ln -s /etc/nginx/sites-available/○○○.net /etc/nginx/sites-enabled/○○○.net
/etc/nginx/nginx.conf
の下の方にあるinclude
に以下の設定をする
#
でコメントアウトしているのは、デフォルトの設定
自分は今回コメントアウトした
#include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;
最後にnginxサービスを停止・起動する
sudo service nginx stop sudo service nginx start
これでwww.○○○.net
でも○○○.net
のどちらでもそれぞれのhtmlが表示できるようになった。