ラージビッグバナー(970x90)

Linux

【Nginx】バーチャルホストの設定を行う~IPベース・名前ベース~

更新日:

ビッグバナー(piglog)728px

Nginx でバーチャルホストの設定を行います。いわゆるIPベースでのバーチャルホストの設定をしようとしてWebを漁っても名前ベースのものしか出てこないな~なんて思っていたら、Nginx ではそんな概念は必要ないらしい。

技術的情報としては基本的な部類に入るけど、いつもあれどうやるんだっけとなるのでまとめておきます。

バーチャルホストの設定

冒頭に記載したとおり、IPベースで構築します。

検証でいくつもアクセス先をつくりたいのですが、VM環境といえどもホストマシンでNICを追加して、、、なんてことは面倒なので、ゲスト環境内でIPアドレスを追加して対応します。

IPの追加は「IP 追加 Linux」などでぐぐるといっぱい出てきますので割愛します。

ip コマンドで確認すると以下の用に表示されている状態です(local loopback は省いた表示)

今回は、192.168.2.30 はホスト用のIPとして保持するのでWebサーバとしては使用しない。192.168.2.31 と 192.168.2.32 をそれぞれWebサーバ1号機と2号機として使用する想定です。

で、実際の設定は以下です。Server コンテキスト は複数記載できるんですね。

説明をしていきます。

listen ディレクティブ

待ち受けポートを指定します。今回やりたかったIPベースでの設定はここにIPを指定するだけで可能。ドメインを指定できるなら(hosts に書くでも同じですが)ここはポートだけ書いておけば動きます。

https の場合には以下の様に指定します。

http/2 を使いたいなら以下のように指定します。

また、今回はIPベースなので使っていませんが、default_server というパラメータがあって理解しておくべきだと思ったので最後にまとめまておきました。

server_name ディレクティブ

Webサーバのドメインを指定します。指定する必要が無い場合は、"" や _(アンダーバー) で問題無しです。もっと言えばディレクティブ自体が記載されていなくも動きます。

また、ワイルドカードが使用できます。

例えば、以下のように記載することでサブドメインを置き換えることができます。

使う用途はあまりないかもしれませんが、同じようにトップレベルドメインを置き換えることもできます。(以下)

他には以下のように記載することで、hoge.com と *.hoge.com にマッチさせることもできる。

 

access_log ディレクティブ

バーチャルホストごとにアクセスログを分けたいのでそれぞれのコンテキストに記載をしています。出力を分ける場合はログファイル名も別の名前を指定します。同じファイル名でもエラーにはならないので注意。

location ディレクティブ

ドキュメントルートとディレクトリインデックス。

error_page ディレクティブ

エラー時のページですね。エラーとして扱われるレスポンスコードが発生した場合に返却するページを指定します。デフォルトでも /usr/share/nginx/html/ に用意されています。ちなみにこのディレクトリがデフォルトのドキュメントルートです。

default_server パラメータについて

listen ディレクティブに記載するパラメータですが、ちゃんと理解してちゃんと設定する必要があるなぁと思ったのでまとめておきます。

リクエストヘッダーの host フィールドと Nginx の server_name が一致しない場合に、参照させる server_name を指定するための設定です。この記述が無いとダウンしているバーチャルホストに対してリクエストが来た場合に、最初に記載された(読み込まれた)サーバーに振り分けられます。

例えば以下の設定がされていて、hoge3.com がダウンしているときに、hoge3.comへのリクエストが来た場合は hoge1.com に送られてしまいます。

以下のように default_server が設定されている場合は、hoge2.com に送られます。

対策としては、どの server_name にも当てはまらない場合は、コネクションを即クローズするという設定をしておいた方がいいんじゃないかと。default_server のserverコンテキストに「return 444」を記載することで設定できます。

おまけでした。以上です。

↓↓↓ 持っていると便利な一冊。

レクタングル (大)

レクタングル (大)

リンクユニット(レスポンシブ)

-Linux
-,

Copyright© ぴぐろぐ , 2018 All Rights Reserved.