» TechAcademyの無料体験

nginxの設定ファイルについて

nginxの設定ファイルについてインフラ

nginxの設定ファイル

/etc/nginx 配下のファイルについて

/etc/nginx配下のファイル

ファイル名内容
nginx.conf最初に読み込まれる設定ファイル
内部で、mime.typesとconf.d/*.confがincludeされている
他のファイルが必要になった場合は都度includeしてあげる
conf.d/default.confポート番号やドキュメントルート設定等、Webサーバとしての設定を記述しているファイル
mime.typesファイル拡張子とContent-Typeのマッピングテーブル
fastcgi_paramsFastCGIのパラメータ・nginxの変数やテキストのマッピングテーブル
scgi_paramsSCGIのパラメータ・nginxの変数やテキストのマッピングテーブル
uwsgi_paramsuWSGIのパラメータ・nginxの変数やテキストのマッピングテーブル

nginxのprocessに関して

nginxは2種類のprocessが起動している。

ps aux | grep nginx

nginx: master processnginx: worker process

  • master:workerプロセスを管理
  • worker:クライアントからHTTPリクエスト等を受け付けて処理している

nginxの設定ファイルの書き方

nginxの設定ファイルの書き方の例を下記に記載(端折っている箇所が多々あります)。

/etc/nginx/nginx.conf

user nginx; #workerが動作するユーザ名。アクセスするファイル等のPermissionをこのユーザがアクセスできるように設定する必要がある
worker_processes auto; #workerプロセス数の設定。コア数と同数のworkerを起動する

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid; #プロセスIDを記述したファイルの配置先。シグナルを送る時に、このファイルを使う

events {
    worker_connections  1024; #1つのworkerプロセスが同時に受け付けることができる接続数
}

#webサーバ全体の設定
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream; #デフォルトのMIMEタイプを設定。mime.typesでMIMEタイプを適用できなかった場合に、ここで指定したMIMEタイプが適用される

    #ログの書式を定義
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main; #ログの出力形式に関しては、log_formatで定義したmain形式を指定

    sendfile        on; #クライアントへのレスポンスをsendfile apiを使って行う
    #tcp_nopush     on;

    keepalive_timeout  65; #keepaliveはwebサーバとクライアントの通信時にHTTP通信を切断せずに、HTTP通信を送受信する仕組みで、HTTP通信をタイムアウトせずに待つ秒数を設定

    #gzip  on;

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

/etc/nginx/conf.d/example.conf

server {
    listen 80;
    server_name  example.com;
    root /home/hoge/example/public; #ドキュメントルートを設定
    index index.php index.html index.htm; #インデックスファイルを指定
    charset utf-8;

    location ~ \.php$ { #拡張子が.phpのファイルへのアクセスに関する指定
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock; #FastCGIサーバの待受アドレスを指定。ここではPHP-FPMのwwwプールの設定で指定したアドレスを指定。Unixドメインソケットなので先頭に「unix:」を付けて区別している
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name; #$document_rootは現在のrootもしくはaliasディレクティブの値が入り、$fastcgi_script_nameには、URIリクエストに等しいか、URIがスラッシュで終わっている場合、URIリクエストとfastcgi_indexで指定されたインデックスファイルの名前と等しい
        include fastcgi_params; #/etc/nginx/fastcgi_paramsの読み込み
    }

    location / { #.phpファイル以外のアクセスに対応
        try_files $uri $uri/ /index.php?$args; #ファイルもディレクトリもなければ/index.phpにアクセス。?$argsは与えられたクエリ文字列を/index.phpに渡すという意
    }
}

fastcgi_paramは名前の通り、FastCGIへ渡すパラメータを設定するディレクティブ。
パラメーター名に「XXX」、値に「XXX」を設定すると、PHPでは$_SERVER[‘XXX’]で値を取得できる。

設定ファイルで使用できるnginxの内部変数に関しての詳細は下記ドキュメントを参考に。

変数のアルファベットの索引 日本語訳

参考

コメント

タイトルとURLをコピーしました