nginxの設定ファイル
/etc/nginx配下のファイルについて
/etc/nginx
配下のファイル
ファイル名 | 内容 |
nginx.conf | 最初に読み込まれる設定ファイル 内部で、mime.typesとconf.d/*.confがincludeされている 他のファイルが必要になった場合は、都度includeしてあげる |
conf.d/default.conf | ポート番号やドキュメントルート設定等、Webサーバとしての設定を記述しているファイル |
mime.types | ファイル拡張子とContent-Typeのマッピングテーブル |
fastcgi_params | FastCGIのパラメータ・nginxの変数やテキストのマッピングテーブル |
scgi_params | SCGIのパラメータ・nginxの変数やテキストのマッピングテーブル |
uwsgi_params | uWSGIのパラメータ・nginxの変数やテキストのマッピングテーブル |
nginxのprocessに関して
nginxは、2種類のprocessが起動している。
ps aux | grep nginx
nginx: master process
、nginx: 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の内部変数に関しての詳細は下記ドキュメントを参考に。
変数のアルファベットの索引 日本語訳
参考
リンク
コメント