Translate

2015年10月4日日曜日

nginxメモ

■インストール
Homebrewで入れました
$ brew install nginx

■コマンド
% nginx
% nginx -s stop
% nginx -s reload

■設定ファイル
max os x
/usr/local/etc/nginx/nginx.conf


読み解いてみる
--------------------------------------------------
#user nobody;
worker_processes 1;
--------------------------------------------------
・user
Nginxワーカプロセス実行時のユーザーアカウントとユーザーグループを指定可能
第一引数:ユーザーアカウント
第二引数:ユーザーグループ

・worker_processes
ワーカー数を複数指定することで、処理を分散させることができる。
CPUのコア数に応じて増やすとよいらしい



--------------------------------------------------
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
--------------------------------------------------
・error_log
エラーログの出力。エラーレベルを分けて出力できる
第一引数:パス
第二引数:levelを指定。levelに応じてファイルを分けることが可能
debug, info, notice, warn, error, crit



--------------------------------------------------
#pid logs/nginx.pid;
--------------------------------------------------
・pid
pidファイルパス



--------------------------------------------------
events {
worker_connections 1024;
}
--------------------------------------------------
Eventsモジュール
・worker_connections
ワーカプロセスの同時接続数を指定



--------------------------------------------------
http {
include mime.types;
default_type application/octet-stream;
--------------------------------------------------
httpモジュール内
incledeでmimeタイプを読み込み
何が書かれているかは、下記を開いてみれば良いと思います
/usr/local/etc/nginx/mime.types
80行ほどいろいろ設定してありました

default_typeは、mime.typesの設定で解決できなかったとき何で解決するかという話ですね
application/octet-streamとなっていますね。



--------------------------------------------------
#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 logs/access.log main;
--------------------------------------------------
httpモジュール内
・log_format
ログの出力形式を指定 第一引数は、書式の名前

・access_log
アクセスログの出力設定
第一引数でファイルパス
第二引数で書式の名前


--------------------------------------------------
sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;
--------------------------------------------------
httpモジュール内
・sendfile
カーネルのsendfileを使うかどうか。使えないとnginx自身がファイル転送をする
第一引数 on/off

・tcp_nopush
ソケットオプションを有効/無効にする
sendfileが有効な時だけ適用される
第一引数 on/off

・keepalive_timeout
キープアライブを切るための待ち時間
第一引数 秒数

・gzip
コンテンツを圧縮するかどうかの設定
第一引数 on/off



--------------------------------------------------
server {
listen 8080;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;
--------------------------------------------------
httpモジュール内 > serverモジュール内
サーバーの設定を行うモジュール

・listen
リクエストを受け付ける設定

listen [address] [:port] [additional options];
addressを省略すると全てのアドレス
portは省略すると80番

・server_name
ホスト名の設定
server_name host1 [host2…]

server_name www.example.com;
server_name www.example.com example.com;
server_name *.example.com;
などなど



--------------------------------------------------
location / {
root html;
index index.html index.htm;
}
--------------------------------------------------
httpモジュール > serverモジュール > locationモジュール
・root
ドキュメントのルートを指定する

・index
指定されなかったときのデフォルトのページを指定
ここでは、省略されているときは、index.html, index.htmを探す


--------------------------------------------------
#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
--------------------------------------------------
httpモジュール > serverモジュール
・error_page
エラーページの設定
error_page code1 [code2…] [=replacement code] [=@block | URI]

例)
error_page 404 /not_found.html
error_page 500 501 502 503 504 /server_error.html
error_page 403 http://www.example.com/;
error_page 404 =200 /index.html; #404エラーは200を返しindex.htmlを開く 存在しないパスに飛んだら特定のページに返すみたいなことね


ひとまずここまで、また何かあれば追加する