2018/01/04

お名前.comで取得したドメインを使ってnginxにサブドメインを設定した話

すごく久しぶりの投稿( ˘ω˘)
タイトルが適切なのかわからないけど, 要するにお名前.comで取得したドメインとnginxを使ったwebサーバーがあって, www.rumraisin.tokyo/fuga-serviceみたいなURLじゃなくてfuga-serivce.rumraisin.tokyoみたいな感じのURLにしたいよねって思ってもちょもちょ設定していたというお話です。これを設定するのに日頃の勉強不足を思い知りまして, そもそも「www.rumraisin.tokyo/fuga-serviceみたいなURLじゃなくてfuga-serivce.rumraisin.tokyoみたいな感じのURLにしたい」とは思ったものの何てググったら良いかわからなかったんですよね。どうやら「サブドメインを使いたい」って言えば良いらしいですこういうの。
今回はお名前.comで取得している"rumraisin.tokyo"に"www.rumraisin.tokyo"と"test.rumraisin.tokyo"というサブドメインを設定して, "https://www.rumraisin.tokyo/"と"https://test.rumraisin.tokyo/"というアドレスでそれぞれ別のページを見られるようにするというのをやっていきたいと思います。

今回の環境はこんな感じ
OS: CentOS 7.4
nginxのバージョン: 1.13.8

■お名前.com側の設定

まずはお名前.com側の設定です。

① ドメインNaviにログインして, [ドメイン設定]→[DNS関連機能の設定] を選択

②  設定したいドメイン名を選択して[次に進む]

③ 「DNSレコード設定を利用する」の[設定する]を選択

④ 「ホスト名」には自分の設定したいサブドメイン("www"と"test"), 「TYPE」には"A", TTLはデフォルトのまま, 「VALUE」にはサーバーのIPアドレスを入れて[追加]をクリック(画像は"test"の例)。Aレコードはwww.rumraisin.tokyoとtest.rumraisin.tokyoの2つを登録してください。
⑤ 画面下の[確認画面へ進む]をクリック
⑥ 次に出てくる画面の[設定する]をクリック

お名前.com側の設定はこれで完了です。おなじみですが, これですぐ反映されるわけではなく, 反映までに時間がかかります。
digなりnslookupなりで設定したサブドメインでサーバーのIPアドレスが取れるかどうかは確認しておいてください。

■nginx側の設定

次にnginx側の設定をしていきます。これはとても簡単です。
まずnginxを使う準備をします。もう済んでるよって人は次のセクションの「nginxのインストール」に進んでください。

システムユーザーの作成

webサーバーの処理を行うシステムユーザーを作成しておきます。

# groupadd webserver
# useradd -g webserber webserver

ログインできないようにしておく

# usermod -s /sbin/nologin webserver
今回は"www.rumraisin.tokyo"用のファイルを /home/webserver/www/ に, "test.rumraisin.tokyo"用のファイルを /home/webserver/test/ にそれぞれ配置していくことにします。

nginxのインストール

nginxをインストールします。もう済んでるよって人は次のセクションの「サーバーの設定」に進んでください。

① まずはリポジトリを追加
/etc/yum.repos.d/nginx.repo を作成して以下の内容をを書く

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

② nginxをインストールして起動・自動起動設定

# yum -y install nginx
# systemctl start nginx
# systemctl enable nginx

③ 起動確認
http://サーバーのアドレス/ で"Welcome to nginx!"って書かれたページが出ればOK

■サーバーの設定

nginxの設定をいじっていきます。
アクセスログ等の設定はご自身の好みの合わせて設定して欲しいですが, 基本的には下記のように設定したサブドメインの分だけ"server"を追記していけばOKです。

① 書く
server {
    listen       80;
    server_name  www.rumraisin.tokyo;

    location / {
        root   /home/webserver/www;
        index  index.html index.htm;
    }
}
server {
    listen       80;
    server_name  test.rumraisin.tokyo;

    location / {
        root   /home/webserver/test;
        index  index.html index.htm;
    }
}

② nginxを再起動
# systemctl restart nginx
各サブドメインのアドレスをブラウザに入力して意図したページが表示されればOKです(ここの例だと"http://www.rumraisin.tokyo/"とか"http://test.rumraisin.tokyo/")。簡単でしょ?
もしここで403エラーが出る場合は, /home/webserver/www/や/home/webserver/test/のディレクトリの権限が755, 各ファイルの権限が644になっているかどうか確認してください。 権限が合っている場合はSELinuxが原因の可能性がありますので下記のサイトを参考に対応してみてください。

SELinuxよりNginxの403エラーについて - Qiita

■SSLの設定

せっかくなんでやっぱりSSLを設定しておきたいなぁということで設定しました。「別にSSLじゃなくても良いよ」という人はここまでの手順でサブドメインを設定できたかと思いますのでここは読まなくて結構です。
まぁこれはけっこう簡単でした。あくまでも私の忘備録ということですし, 特にここでは迷わなかったので下記サイトによくまとまっていますので参考にしてみてください(開き直り)。

参考文献