skillup

技術ブログ

サーバー・ネットワーク

nginxの設定ファイルの書き方に関して

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

設定ファイルの構成と基本用語

一般的な設定ファイル( /etc/nginx/conf/nginx.conf )は下記のようになっているでしょう。

以下説明をさせていただきます。

ディレクティブ

それぞれの設定項目(worker_processessやevent,httpなど)のことをディレクティブとよみます。例eventディレクティブなど

数値、文字、真偽値、$から始まる変数などを使用できます。

コンテキスト

一部のディレクティブは一行で終わらずに内容が{}をつかい複数行にわかれます。(server,locationなどが一般的)

基本的なディレクティブの遷移

nginxがリクエストを処理する場合、下記のような流れになります。

  1. Hostヘッダ、ポートでどのserverディレクティブにマッチするかを決める
  2. マッチするserverディレクティブ内の処理を行う
  3. serverディレクティブ内のマッチするloactionコンテキストの処理を行う

下記に必要なディレクティブを列挙していきます。

serverディレクティブ

HTTPサーバーのバーチャルホストを定義します。定義したホストが受け取るポート番号やドメインはserver内に記述します。

locationディレクティブ

指定した条件にマッチするパスに対する処理を記述するために使用します。

マッチする条件は正規表現などを使って記述できます。

rootディレクティブ

実際にコンテンツを置くディレクトリを指定します。

ディレクトリは絶対パスかnginxのインストールディレクトリからの相対パスで指定します。

rootディレクティブはhttpコンテキスト、serverコンテキスト、locationコンテキストに記述できます。

またテキストにマッチしたパス以下のルートディレクトリになります。

http://skill-up-engineering.com/?p=1784 のrootの項目を参照

error_pageディレクティブ

エラーの際に表示するURLを指定します。引数には、スペース区切りで並べたHTTPステータスコードを指定し、最後に引数にそのステータスコードでマッチした場合に表示するURLを指定します。

また@から始まるパスを思料することで、ほかのサーバーにフォールバックするような設定を書くことができます。

userディレクティブ

ワーカープロセスを稼働させるユーザー、グループを指定します。指定しない場合はnobodyユーザー、ngobodyグループになります。

worker_processディレクティブ

ワーカの数を指定します。nginxは1つのワーカプロセスがリクエストを処理しますが、それぞれのワーカーはシングルスレッドで動作します。

そのため基本的にはCPU数のコア数と同じ値を指定することになります。しかしnginxが大量の静的ファイルを処理する場合には、CPU処理時間よりもI/O待ちの時間が長くなってしまうことがあげられます。この場合は、CPUのコア数よりも若干多めにすることでパフォーマンスを向上させられます。

worker_connectionディレクティブ

各ワーカが処理するコネクション数を指定します。各ワーカがこの値を超えるコネクションを受け入れようとすると503を返す。各ワーカが処理できる不可を考えつつ設定するとよいでしょう。

worker_rlimit_nofileディレクティブ

各ワーカがオープンできるファイルディスクリプタの最大数を指定します。nginxに大量のファイルを処理させる場合には、この値を大きくする必要があります。このnginxのキャッシュ機構はファイルを用いて実現されているため、キャッシュ機能を利用している場合にも注意する必要があります。

参考文献

サーバー・インフラ徹底攻略

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

執筆者:


comment

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

関連記事

no image

supervisorによるデーモン化

えー実務で任意のプログラムをデーモン化させて処理をするという実装があったのでメモ。 Contents1 デーモンとは?2 Supervisor2.1 インストール2.2 実行プログラム2.3 サービス …

no image

AWSのSNSについて

AWSについてここ2年ぐらい触っていますが、以前の現場ではリーダーの方が色々やられたおかげで根本的なところが理解できておらず、家でアカウントを作ってコツコツとやってます。 今回はSNSについて。 基本 …

no image

サーバーの過負荷の発見 メモリ使用率の調査&抽出、置換(awk,sed)コマンドについて

前回、サーバーの負荷調査について記事を書いたので、それに関するスクリプトを。 Contents1 仕様2 ソース3 解説3.1 freeコマンド3.2 awk3.3 sed 仕様 日付とメモリ使用率、 …

no image

webサーバーのログの見方

サーバー監視の基礎となるWebサーバーのログ(主にApache)の見方について少し書いてみようと思います。Apacheで解説しますが、nginxでもほぼおなじです。 Contents1 モジュール読み …

no image

Linuxコマンドでのテキスト整形 CSV系の処理など

以前、対テキストファイル系のLinuxコマンドの使い方を紹介しましたが、その関連エントリーを。 今回やるのはCSV系の処理ですね。 id name age 1  suzuki 35 2  tanaka …