コンテンツにスキップ

nginx.conf@Nginx

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. セットアップ

インストール

▼ aptリポジトリから

nginxをapt-getコマンドでインストールすると、旧バージョンが指定されるため、aptコマンドを使用する。

$ apt install nginx

▼ yumリポジトリから

$ yum install -y nginx


02. 設定ファイルの種類

/etc/nginx/conf.d/*.confファイル

.../conf.d/*.confファイルとは

デフォルトの設定が定義されているいくつかのファイル。

基本的には読み込むようにする。

ただし、nginx.confファイルの設定が上書きされてしまわないかを注意する。

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


/usr/share/nginx/modules/*.confファイル

.../modules/*.confファイルとは

モジュールの読み出し処理が定義されているファイル。

include  /usr/share/nginx/modules/*.conf;


/etc/nginx/mime.typesファイル

mime.typesファイルとは

リクエストのContent-TypeのMIMEタイプとファイル拡張子の間の対応関係が定義されているファイル。

include /etc/nginx/mime.types;


/etc/nginx/fastcgi_paramsファイル

fastcgi_paramsファイルとは

FastCGIプロトコルでルーティングする場合に使用する。

アプリケーションで使用できる変数を定義する。

nginx.confファイルによって読み込まれる。

OSやそのバージョンによっては、変数のデフォルト値が異なることがある。

実際にインバウンド通信のルーティング先に接続し、上書き設定が必要なものと不要なものを判断する必要がある。

▼ Debian系の場合

Debian10の設定ファイルを以下に示す。

*実装例*

#-------------------------------------------------------
# OSによって、fastcgi_paramsファイルの必要な設定が異なる
#-------------------------------------------------------
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHPのみで必要な設定
fastcgi_param  REDIRECT_STATUS    200;


03. Core

ブロック

▼ events

*実装例*

events {
  worker_connections  1024;
}


ディレクティブ

▼ user

本設定ファイルの実行ユーザーとグループを設定する。

グループ名を入力しなかった場合、ユーザー名と同じものが自動的に設定される。

user  www www;

▼ error_log

error_log  logs/error.log;

▼ include

共通化された設定ファイルを読み込む。

アスタリスクによるワイルドカード (*) をサポートしている。

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

includeディレクティブをどの階層で実行したかによって、指定した設定ファイル内で実行できるディレクティブが異なる。

例えば、httpディレクティブは一番上の階層で実行する必要があるため、これを定義した設定ファイルは一番上の階層のincludeディレクティブで指定する必要がある。

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

http {
    # ここでhttpを実行する設定ファイルをincludeできない
}

▼ load_module

Nginxでは、ビルド時にモジュール (soファイル) をバイナリを組み込むが、すでにビルド済みのモジュールを実行時に読み込める。

デフォルトでは、モジュールはmodulesディレクトリにある。

load_module modules/<動的モジュール名>;

▼ pid

pid logs/nginx.pid;

▼ worker_connections

workerプロセスが同時に処理できるコネクションの最大数を設定する。

worker_connections 1024;

▼ worker_processes

worker_processes 5;

▼ worker_rlimit_nofile

worker_rlimit_nofile 8192;


04. 変数

$request_uri

受信したリクエストのHTTPメソッドとURLが割り当てられている。

GET http://_:80/foo


$uri

受信したリクエストのURLパスが割り当てられている。