LoginSignup
27
21

More than 5 years have passed since last update.

nginx.confを書きながら内容を理解する

Posted at

この記事は何?

  • 自分のnginxの勉強のためのアウトプットです。

前提

  • nginxが最小構成で動くような設定だけを対象として読んでいます。

server.confの内容

user

  • プロセスを起動するユーザ
  • master processはrootで起動する

worker_processes

  • workerの数
  • autoだとコア数に設定してくれる

pid

  • プロセスIDを格納するファイル

events

worker_connections

  • 1ワーカーの接続数

multi_accept

  • 複数のリクエストを同時に受け付けるか

use

  • 複数アクセスをさばくためにI/O多重化に使うシステムコールを指定する
  • select/poll/epoll
  • epollはselect/pollに比べて計算量が少なく、また監視対象のファイルディスクリプタの数が無制限

http

charset

  • HTTPレスポンスヘッダのContent_Typeに付与する文字コード

server_tokens

  • HTTPレスポンスヘッダのServerにnginxのバージョンを入れるか

MIMEタイプの指定

  • /etc/nginx/mime.types;にnginxが用意したMIMEタイプと拡張子のマッピングがある
  • マッピングに無いものはdefault_typeで指定したMIMEタイプとなる

access_log

  • アクセスログの出力先PATHを指定する

error_log

  • エラーログの出力先

server

  • バーチャルホスト毎の設定を行う

listen

  • LISTENするポート

server_name

  • HTTPリクエストヘッダのHostに該当する

root

  • Documentルートを指定する

index

  • HTTPリクエストのURLが「/」で終わっている時にインデックスとして使うファイルを指定する

charset

  • HTTPレスポンスヘッダのContent_Typeに付与する文字コード

location

  • URIのパスごとの設定を書く

こんな感じで動いた

# プロセスを起動するユーザ
user nginx;

# workerの数
# auto: コア数に合わせて設定
worker_processes auto;

# プロセスIDを格納するファイル
pid /var/run/nginx.pid;

# イベント処理に関するモジュール
events {
  # 1ワーカーあたりの接続数
  worker_connections 2048;

  # 複数リクエストを同時に受け付けるか
  multi_accept on;

  # I/O多重化に使うシステムコールを選択する
  # epollはselect/pollに比べて計算量が少なく、また監視対象のファイルディスクリプタの数が無制限
  use epoll;
}

# httpに関するモジュール
# httpサーバ全体の設定
http {
  # HTTPレスポンスヘッダのContent_Typeに付与する文字コード
  charset UTF-8;

  # HTTPレスポンスヘッダのServerにnginxのバージョンを入れるか(開発時以外は入れないほうが吉)
  server_tokens off;

  # MIMEタイプの指定
  ## nginxがデフォルトで用意するMIMEタイプと拡張子のマッピングファイル
  include /etc/nginx/mime.types;

  ## マッピングにない拡張子のdefault
  default_type text/plain;

  # アクセスログの出力先
  access_log /var/log/nginx/access.log;

  # エラーログの出力先
  error_log /var/log/nginx/error.log;

  # バーチャルホスト毎の設定
  server {
    # LISTENするポート
    listen 80;

    # HTTPリクエストヘッダのHostに該当する
    server_name localhost;

    # ルートディレクトリを指定する
    root /var/www/html;

    # HTTPリクエストのURLが「/」で終わっている時にインデックスとして使うファイル
    index index.html;

    # HTTPレスポンスヘッダのContent_Typeに付与する文字コード
    charset utf-8;

    # アクセスログの出力先
    access_log /var/log/nginx/access.log;

    # エラーログの出力先
    error_log /var/log/nginx/error.log;

    # URIのパスごとの設定
    location / {
      # ルートディレクトリを指定する
      root /var/www/html;
    }
  }
}

27
21
1

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
27
21