skillup

技術ブログ

サーバー・ネットワーク

nginxによる一般的なwebサーバーの構築

投稿日:2016年12月9日 更新日:

今回は一般的なwebサーバーでよく利用するnginxの基本機能を紹介します。

サーバー・インフラ徹底攻略の3章になります。

バーチャルホストを利用する

1つのWebサーバーで複数のwebサイトを運用する機能です。

バーチャルホストを定義するにはserverディレクティブで区切った部分が1つのバーチャルホストとしてみなされ、中にさまざまな設定を記述することによりそのホストに関する設定を行うことができます。

バーチャルホストの説明

小悪魔女子大生のサーバエンジニア日記 バーチャルホストとは?

serverディレクティブを用いserverコンテキストを複数定義することで複数のバーチャルホストを定義できます。

振り分けるには次の2通りの方法があります。

  • IPアドレスベース
  • ネームベース

IPアドレスベースのバーチャルホスト

IPアドレスによりアクセス先を変更する方法です。listenディレクティブを利用します。

listenディレクティブはserverコンテキスト内で使用し、バーチャルホストがリクエストを受け付けるIPアドレスおよびポート番号の指定を行うためのディレクティブで下記のように指定します。

IPアドレスで複数のバーチャルホストを定義する場合は、次のようにlistenディレクティブで別々のアドレスを指定します。

ネームベースのバーチャルホスト

ホスト名によりアクセス先を切り替得る方法です。どちらかというとこちらのほうが一般的かと思います。

またスペースで区切ることにより複数のホスト名を指定したり、ワイルドカードを利用して複数のホスト名とマッチさせることができます。

複数指定

ワイルドカード指定

複数指定

またスペースで区切る代わりに複数のserver_nameディレクティブを使用して設定することもできます。一般的にはserver_nameごとに設定ファイルを記述し,conf.dの下に置いておくパターンが多いでしょう。

正規表現

さらに正規表現による指定を行うこともできます。 正規表現による指定を利用する場合は値の先頭に~をつける必要があります。

連番がついている大量のホスト名を処理するときなどに便利です。

アクセス制御

nginxには受け付けたリクエストに合わせて適用する設定を柔軟に切り替える機能が豊富に用意されています。

それらの機能の一部を紹介します。

locationディレクティブ

リクエストURIのパスを指定した条件と照らし合わせ、条件にマッチした場合は設定を適用するといった機能です。

たとえば下記のように記述した場合、URIのパスがmemberに前方一致した場合に認証をかける設定です。

また下記のように記述した場合、パスの末尾が.css .js .htmlのいずれかの場合はgzip圧縮を行うこととなります。

-サーバー・ネットワーク
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

wordpressでのnginx設定

ここ1年、apacheではなく、nginxでサービスを作ることが多いため、設定にだいぶ慣れてきました。 今回はwordpressの設定です。 バーチャルホストでsample.comとアクセスをするとw …

no image

PHPMailerに関して(PHPのメール送信)

PHPのMailライブラリに関して。 今までmb_send_mailとかで誤魔化してましたが、以下のようにライブラリで送るケースのサンプル。 https://github.com/umanari145 …

no image

ロードバランサーの構築(dockerを例に)

以前から興味のあったロードバランサーをdockerで構築。 Contents1 ロードバランサーとは?1.1 定義1.2 メリット1.2.1 負荷軽減1.2.2 可用性の向上1.2.3 拡張性の向上1 …

no image

PHP_CodeSnifferによるコードチェック

昨日の記事でphpmdという静的解析ツールを調査したんですが、それ以外にも規約にのっとっているかどうかコーディングをチェックできるツールはあります。 PHP_CodeSniffer https://g …

no image

composerでのライブラリ登録

今回はPHPのパッケージ管理ツールであるcomposerへのライブラリ登録を。 Contents1 ライブラリの作成2 packagistへの登録3 呼び出す側3.1 composer.json3.2 …