1.nginx功能模块说明
Nginx功能模块 模块说明
ngx_http_core_module 包括一些核心的http参数配置,对应Nginx的配置为区块部分
ngx_http_access_module 访问控制模块,用来控制网站用户对Nginx的访问 ngx_http_gzip_module
压缩模块,对Nginx返回的数据压缩,属于性能优化模块 ngx_http_fastcgi_module
fastcgi模块和动态应用相关的模块,例如PHP ngx_http_proxy_module proxy代理模块
ngx_http_upstream_module 负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查
ngx_http_rewrite_module URL地址重写模块 ngx_http_limit_conn_module
限制用户并发链接及请求数据模块 ngx_http_limit_req_module 根据定义的key限制Nginx请求过程的速率
ngx_http_log_module 访问日志模块,以指定的格式记录Nginx客户访问日志等信息
ngx_http_auth_basic_module Web认证模块,设置Web用户通过账号密码访问Nginx
ngx_http_ssl_module ssl模块,用于加密的http连接.如https
ngx_http_stub_status_module 记录Nginx基本访问状态信息等的模块
有关核心功能模块的详细信息地址为: http://nginx.org/en/docs/ngx_core_module.html
2.配置文件说明:
worker_processes 1; #worker进程的数量
events { #事件区块开始
worker_connections 1024; #每个worker进程支持的最大连接数
} #事件区块结束
http { #Http区块开始
include mime.types; #Nginx支持的媒体类型文件包含
default_type application/octet-stream; #默认的媒体类型
sendfile on; #开启高效传输模式
keepalive_timeout 65; #连接超时
server { #第一个Server区块开始,表示一个独立的虚拟主机站点
listen 80; #提供服务的端口,默认80
server_name localhost; #提供服务的域名主机名
location / {
root html; #站点的目录,相对于nginx安装目录
index index.html index.htm; #默认的首页文件,多个空格分开
} #第一个Location区块结束
error_page 500 502 503 504 /50x.html;#出现对于的http状态码时显示页面
location = /50x.html { #location区块开始,访问50x.html
root html; 指定对应的站点目录为html
}
}
}# http区块结束
2.1 进程数*连接数 = 并发数 如下支持并发 = 1 * 1024 =1024
2.2 虚拟主机在Nginx软件使用一个server { } 标签来标示一个虚拟主机
3.Nginx错误日志配置
错误日志级别【 debug | info | notice | warn | error | crit | alert | emerg 】
级别越高记录的信息会越少,生产场景一般是warn |error |crit 这三个级别之一
注意:不要配置info等较低的级别,会带来巨大的磁盘I/O消耗
error_log的默认值
#default: error_log logs/error.log error; #前面标示 中间位置 后面级别
可以放置的标签段为:
#context: main, http, server, location
location / {
root html;
error logs/error.log error;
index index.html index.htm;
}
-
Nginx访问日志配置
系统默认访问日志配置:#log_format main '$remote_addr - r e m o t e u s e r [ remote_user [ remoteuser[time_local] “$request” ’
'$status b o d y b y t e s s e n t " body_bytes_sent " bodybytessent"http_referer" ’
‘“ h t t p u s e r a g e n t " " http_user_agent" " httpuseragent""http_x_forwarded_for”’;
系统默认访问日志配置:
access_log logs/access.log main;
参数说明:
$remote_addr 记录访问网站的客户端地址
$http_x_forwarded_for 当前端有代理服务器时,设置Web节点记录客户端地址的配置,
此参数生效的前提是代理服务器上也要进行相关的x_forward_for设置
$remote_user 远程客户端用户名称
$time_local 记录访问时间与时区
$request 用户的http请求请求起始行信息
$status http状态码,记录请求返回的状态,例如:200,404,301等
$body_bytes_sents 服务器发送给客户端的响应body字节数
$http_referer 记录此次请求是从哪个链接访问过来的,可以根据referer进行防盗链设置
$http_user_agent 记录客户端访问信息,例如:浏览器,手机客户端等
配置如下:
http模块中新增日志格式配置:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen 80;
server_name status.etiantian.org;
location / {
root html;
index index.html index.htm;
}
access_log logs/access.log main;
}
日志格式:
日志内容:
对应说明:
$remote_addr 对应的真实日志里的10.0.0.100 即客户端的IP
$remote_user 对应的是第二个中杠"-", 没有远程用户,所以用"-"填充。
[$time_local] 对应的是[05/Apr/2015:12:16:00+0800]
"$request" 对应的是"GET/HTTP/1.1"
$status对应的是200状态码,200是正常访问
$body_bytes_sent 对应的是25字节,响应body的大小
"$http_referer"对应的是"-" 直接打开的域名浏览,因此,referer没有值
"$http_user_agent" 对应的是"Mozilla/5.0(Windows NT 6.1;WOW64) Apple...."
"$http_x_forwarded_for"对应的是"-",因此Web服务器没有使用代理,因此此处为"-"
可以在记录日志参数中加上buffer和flush选项,这样做会在高并发场景下提升网站访问性能,加该选项命令如下:
5.实现日志的切割功能
mkdir /server/scripts/
cat >> nginx_cut_log.sh << EOF
cd /application/nginx/logs
/bin/mv www_access.log www_access_$(date +%F -d '-1day').log
/application/nginx/sbin/nginx -s reload
内容用rsync同步到备份服务器
#rsync .... to backup server
#del date before 7 day 移除7天前的数据
#find ....
EOF;
执行:
/bin/sh /server/scripts/nginx_cut_log.sh
crontab -e
00 00 * * * /bin/sh /server/scripts/nginx_cut_log.sh >/dev/null 2>&1