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

jenkinsのオートデプロイ

久々にJavaやりました。 Contents1 やりたいこと2 ハマりポイント2.1 Antでのjobの設定2.2 jenkinsでビルドできない2.3 jenkinsのオートデプロイ2.4 SSHで …

no image

クロスドメインがらみのajax

ajaxで別ドメインに対して、プログラムを実行したい時に注意すべきことなどを。 Contents1 ログ、レスポンスヘッダをとにかく追う2 特定ドメインからの許可3 フレームワーク側での認証ロジック( …

no image

DNSの仕組み

本日はDNSについて。 とりあえず要点のみ DNSのざっくりとした仕組み ネットワーク上での住所を決める仕組み。 本来はIPがその役割を果たしている. [crayon-64812de379e72744 …

no image

nginx上でのcakePHP

cakePHP上をCentOS,nginx上で公開するときのメモなどを。 cakeのversionは2.5です。 /var/www/html/sampleapp直下にプログラムを配置するものとします。 …

no image

php-fpmトラブル(nginxが競合?)

php-fpmが急に停止になるトラブルがあったので、ちょっとメモ。 php-fpmを再起動しようとしても下記のようなエラーが・・・

p …

アーカイブ