日志模塊
1、access_log指令
語法: access_log path [format [buffer=size [flush=time]]];
access_log logs/access.log main;
默認值: access_log logs/access.log combined;
配置段: http, server, location, if in location, limit_except
gzip壓縮等級。
buffer設置內存緩存區大小。
flush保存在緩存區中的最長時間。
不記錄日志:access_log off;
使用默認combined格式記錄日志:access_log logs/access.log 或 access_log logs/access.log combined;
2、log_format指令
http { ... log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; ... }
$remote_addr, $http_x_forwarded_for 記錄客戶端IP地址
$remote_user 記錄客戶端用戶名稱
$request 記錄請求的URL和HTTP協議
$status 記錄請求狀態
$body_bytes_sent 發送給客戶端的字節數,不包括響應頭的大小; 該變量與Apache模塊mod_log_config里的“%B”參數兼容。
$bytes_sent 發送給客戶端的總字節數。
$connection 連接的序列號。
$connection_requests 當前通過一個連接獲得的請求數量。
$msec 日志寫入時間。單位為秒,精度是毫秒。
$pipe 如果請求是通過HTTP流水線(pipelined)發送,pipe值為“p”,否則為“.”。
$http_referer 記錄從哪個頁面鏈接訪問過來的
$http_user_agent 記錄客戶端瀏覽器相關信息
$request_length 請求的長度(包括請求行,請求頭和請求正文)。
$request_time 請求處理時間,單位為秒,精度毫秒; 從讀入客戶端的第一個字節開始,直到把最后一個字符發送給客戶端后進行日志寫入為止。
$time_iso8601 ISO8601標准格式下的本地時間。
$time_local 通用日志格式下的本地時間。
事件模塊
events { use epoll; worker_connections 1024; }
1、worker_connections指令
定義一個worker進程能夠並發處理的最大連接數,默認是512,
最大連接數 = worker_processes * worker_connections
在反向代理環境下:最大連接數 = worker_processes * worker_connections/4
由於瀏覽器默認打開2個連接到服務器,nginx使用來自相同地址池的fds(文件描述符)與前后端相連接