Nginxでサブドメインを同じIPアドレスで処理

このサイトはお名前ドットコムで買ったドメイン。

yanagee.comだけだと実験しづらいので、test.yanagee.comと、testwp.yanagee.comを作成する。

お名前ドットコムでのサブドメイン取得

取得済みドメインの[ドメイン設定]⇒[DNS関連機能の設定]といき、

[DNSレコード設定を利用する]から設定する。

設定は、作りたいドメインを追加。

ドメインを追加してすぐは動かないが、

動くようになる。

Nginxでサブアドレスの設定

サーバーはApacheではなくNginxを使っている。

以下、Nginxの場合の設定。

/etc/nginx/conf.d/***.confを設定

/etc/nginx/conf.dディレクトリに、nginxのルーティング設定が入っている。

このサイトだとこんな感じ。↓

nginxは、/etc/nginx/nginx.conf を起動時に読み込んでいて最終行にある「include /etc/nginx/conf.d/*.conf;」で、conf.dディレクトリの各設定を読み込んでいる。

初期設定の「_http.conf」と「_ssl.conf」を、コピーして、サブドメイン用の設定ファイルを作成する。

_http.conf と _ssl.conf の二つは初期設定で、ほかのconfに該当するものがない場合のルーティングが書かれている。

サブドメイン用のSSLとHTTPのconfは、「cp _http.conf(_ssl.conf) 新しいファイル名」でコピーして使った。

コピーしたどちらも、Server_nameにサブドメインを指定。

/etc/hostsにサブドメインのアドレスを追加

ホスト設定に、ドメインを登録する。

「vim /etc/hosts」で、1行目に、サブドメインを新しく書いておく。

起動テスト

ブラウザから、アクセスしてみる。

  • トップドメイン
  • サブドメイン
  • IPアドレス

それぞれ、指定されたページへアクセスできていればOK。

おまけ:htpasswdで、Basic認証を設定。

テストページは外部公開したくないので、クローラーや偶然のアクセスから守る。

Basic認証ならば一瞬で設定できる。

1.htpasswdコマンドでログインのユーザ・パスワードを生成

「htpasswd -c(-cは新規作成の場合) /ディレクトリ名(例>/etc/nginx/.htpasswdなど) ユーザー名 パスワード」で作成。指定したディレクトリに.htpasswdファイルが生成される。

2.正しくユーザ・パスワードが生成できたか確認

「vim /etc/nginx/.htpasswd」で表示すると、ユーザ名と暗号化されたパスワードが確認できる。

lsやllで確認する場合は、-aをつけて隠しファイル表示を指定する「ls -a /etc/nginx/」。

htpasswdのパスワードは、Cryptでパスワード化されており、最初の8文字以外はあまり意味がないらしい。?

3.nginxの設定にBasic認証を設定する

前述の/etc/nginx/conf.d/***.conf に入れたサブドメインの設定ファイルにBasic認証の設定を追加する。

~/etc/nginx/conf.d/設定ファイル.conf~

location / {

try_files $uri $uri/ /index.php?$args;
  auth_basic “Restricted”;
  auth_basic_user_file /etc/nginx/.htpasswd;
  #↑ここにhtpasswdで設定したファイルを指定

}

SSLとHTTPの両設定ファイルをBasic認証にしたら完成。

4.Nginxの再起動とブラウザから動作確認

「sudo service nginx restart」で再起動。

ブラウザからアクセスして、正しくBasic認証が表示されて、

ユーザ・パスワードでログインできたら成功。

Advertise

シェアする

フォローする