规范化Nginx配置文件
将server块打包为文件利用include导入配置文件。
优化后如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include extra/www.conf; #虚拟网站配置信息统一放在了当前的extra目录下
include extra/mail.conf;
include extra/status.conf;
}
[root@localhost nginx]# tree conf/zxy.com/
conf/extra/
├── mail.conf
├── status.conf
└── www.conf
0 directories, 3 files
[root@localhost nginx]# cat conf/extra/www.conf
server {
listen 80;
server_name www.yunjisuan.com;
location / {
root /var/www/html/wwwcom;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
}
Nginx状态信息功能实战
确认编译时是否设定了此模块(–with-http_stub_status_module模块就是状态信息模块)
root@localhost nginx]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.10.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx-1.10.2/ --with-http_stub_status_module --with-http_ssl_module
若没有安装,利用命令
./configure --prefix=/var/local/src --with-http_stub_status_module
make
mv /var/local/src/sbin/nginx /var/local/src/sbin/nginx_bak
cp objs/nginx /var/local/src/sbin
/var/local/src/sbin/nginx -t
重启服务,即模块添加完毕
设定信息模块配置
[root@localhost nginx]# cat conf/zxy.conf/status.conf
##status
server{
listen 80;
server_name status.yunjisuan.com;
location / {
stub_status on; #开启状态信息功能
access_log off; #不记录访问日志
}
}
##说明
状态信息模块配置方式和搭建虚拟网站类似需要占用一个域名来访问
[root@localhost nginx]# curl status.yunjisuan.com
Active connections: 2 #表示Nginx正在处理的活动连接2个
server accepts handled requests
39 39 41
Reading: 0 Writing: 1 Waiting: 1
第一个server表示Nginx启动到现在2共处理了39个连接 第二个accepts表示Nginx启动到现在共成功创建了39次握手
请求丢失数=(握手数-连接数),可以看出,本次状态显示没有丢失请求。 第三个handled requests,表示总共处理了41次请求。
Reading为Nginx读取到客户端的Header信息数 Writing为Nginx返回给客户端的Header信息数
Waiting为Nginx已经处理完正在等候下一次请求指令的驻留连接。在开启keep-alive的情况下,这个值等于active -(reading+writing)
增加错误日志
> 常见的日志级别【debug|info|notice|warn|error|crit|alert|emerg】
> 生产场景一般是warn|error|crit这三个级别之一,注意不要配置info等较低级别,会带来巨大磁盘I/O消耗。
> error_log的默认值为:
worker_processes 1;
error_log logs/error.log; #非常简单,一般增加此行即可
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include extra/www.conf;
include extra/mail.conf;
include extra/status.conf;
}
Nginx访问日志轮询切割
默认情况下Nginx会把所有的访问日志生成到一个指定的访问日志文件access.log里,但这样一来,时间长了就会导致日志个头很大,不利于日志的分析和处理,因此,有必要对Nginx日志,按天或按小时进行切割,使其分成不同的文件保存。
在html/相同目录下创建目录date并编写脚本runlog.sh(目录自己修改)
#!/bin/bash
LOGPATH=/var/local/src/logs/access.log #将要改名字的目录设置为变量
BASEPATH=/var/local/src/date/$(date -d yesterday +%Y%m) #计算每年的每月的目
录创建并整合
mkdir -p /var/local/src/date/$(date -d yesterday +%Y%m) #创建每年每月目录
bak=$BASEPATH/$(date -d yesterday +%d%H%M).www.zxy.com.access.log #将备份> 文件名写好存入变量
mv $LOGPATH $bak #剪切
touch $LOGPATH
kill -USR1 `cat /var/local/src/logs/nginx.pid` #将日志转存入新的日志文件中
然后添加定时任务:crontab