4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Nginx】Nginxとは

Posted at

Nginxとは

Nginxは、webサーバーソフトウェアです。

  • webサーバー
  • リバースプロキシサーバー
  • キャッシュサーバー
  • ロードバランサー

上記のような役割を果たすことができます。

webサーバーの設定

ここではNginxをwebサーバーとして使う場合を念頭に設定方法を見ていきます。

設定ファイル

デフォルトの設定ファイルは、/etc/nginx/nginx.confです。(OSによってファイルの場所が異なることがある。)
/etc/nginx/conf.d/配下に、追加で設定ファイルを置くことができます。~.confというファイルを設置してアプリごとや用途ごとに設定しておきます。これらはnginx.confでincludeで呼び出して使われます。

include /etc/nginx/conf.d/*.conf;


設定ファイルは、ディレクティブとパラメータで構成されます。

ディレクティブ パラメータ;
user nobody;

eventshttpserverlocationディレクティブはコンテキストとして参照されます。コンテキストは{}で囲まれた部分です。
コンテキスト外に置かれているディレクティブはmainコンテキストに属します。

user nobody; # a directive in the 'main' context

http {

    # Configuration specific to HTTP and affecting all virtual servers

    server {
        # configuration of virtual server 1

        location /one {
            # configuration for processing URIs with '/one'
        }

        location /two {
            # configuration for processing URIs with '/two'
        }
    }

    server {
        # configuration of virtual server 2
    }
}

バーチャルサーバの設定

HTTPリクエストを処理するためには、設定ファイルにバーチャルサーバを定義します。

http {
    server {
        listen 127.0.0.1:8080;
        # The rest of server configuration
    }
}

serverディレクティブには、listenディレクティブを含める必要があります。これはNginxがlistenするIPアドレスとポート番号を指定します。IPアドレスが省略された場合は、全てのIPアドレスでlistenすることになります。

serverディレクティブを複数設定してバーチャルサーバを複数定義することもできます。

locationの設定

locationディレクティブを設定することで、リクエストURLに応じて処理を分けることができます。

server {
    location / {
        # URIが/に合致する場合の処理
    }

    location /images/ {
        # URIが/images/に合致する場合の処理
    }
}

Nginxは全てのlocationディレクティブのパラメータに対してURIをテストし、適合するディレクティブを適用します。

locationディレクティブのパラメータはプリフィックスの文字列または正規表現で記述します。

location /some/path/ {
    ...
}

location ~ \.html? {
    ...
}

# /some/path/document.htmlのようなリクエストが合致する。

locationを複数設定することで、URLによって処理をそれぞれ分けることができます。

server {
    location / {
        # プロキシに処理を渡す
        proxy_pass http://www.example.com;
    }

    location /images/ {
        # 静的ファイルを提供する
        root /data;
    }
}

proxy_passディレクティブは、指定したURLにあるサーバにリクエストを渡します。上の例では、"/images/"で始まらないURLへの全てのリクエストを、プロキシされたサーバに渡します。
rootディレクティブは静的なファイルが存在するパスを指示します。

エラーページの設定

error_pageディレクティブを使うことで、特定のエラーコードで返されるページを設定できます。
以下では404エラーのときに返すページを設定しています。

error_page 404 /404.html;

リダイレクトさせることもできます。

location /old/path.html {
    error_page 404 =301 http:/example.com/new/path.html;
}

古いURLでアクセスしてきたときに301で新しいURLにリダイレクトします。(301コードはブラウザにページが移動したことを伝え、古いアドレスを新しいものに自動的に置き換えるように伝えます。)

変数

nginx.confファイルは変数を設定することができます。$記号が変数の印です。

独自の変数を定義することもできますが、定義済みの変数もあります。
例えば、$remote_addrはクライアントのIPアドレス、$uriは現在のURIの値を持っています。

まとめ

Nginxは、webサーバーソフトウェアです。

nginx.confがデフォルトの設定ファイルで、/etc/nginx/conf.d/配下に独自に設定ファイルを追加します。

webサーバーとして使いたい場合、serverディレクティブにバーチャルサーバを設定し、locationディレクティブにURLごとの処理を指定します。


参考

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?