nginx的使用
1、安装
1、先安装gcc
yum install -y gcc gcc-c++
2、安装pcre和pcre-devel
yum install pcre pcre-devel
3、安装zlib库
cd /usr/local/ wget http://zlib.net/zlib-1.2.11.tar.gz tar -zxvf zlib-1.2.11.tar.gz ./configure make && make install
4、安装nginx
cd /usr/local/src/ wget http://nginx.org/download/nginx-1.16.0.tar.gz tar zxvf nginx-1.16.0.tar.gz cd nginx-1.16.0 ./configure --prefix=/usr/local/nginx make && make install
5、启动nginx
/usr/local/nginx/sbin/nginx
6、启动完成后可以访问一下ip,是看否启动成功,如果启动不成功可能是端口被占用,需要把占用端口的软件关闭,重新启动
2、信号量
1、具体语法:Kill -信号选项 nginx的主进程号
2、信号选项有下列几个:
1、TETM、INT ------- 快速关闭 2、QUIT ------- 优雅的关闭,等所有进程处理完任务后关闭主进程 3、HUP ------- 优雅的重启,重新读取配置文件 4、USR1 ------- 如果备份了旧的日志文件,想让日志写入新创建的日志中,需要使用的指令 5、USR2 ------- 平滑的升级
3、命令控制
1、基本命令如下:
1、/usr/local/nginx/sbin/nginx 启动 2、./sbin/nginx -s quit 优雅关闭 3、./sbin/nginx -s stop 快速关闭 4、./sbin/nginx -s reopen 重读配置文件 5、./sbin/nginx -t 测试配置文件是否正确 6、./sbin/nginx -s reload 重启
4、Nginx配置段
1、全局区
worker_processes 1; // 有1个工作的子进程,可以自行修改,但太大无益,因为要争夺CPU,一般设置为 CPU数*核数
2、events块
Event { // 一般是配置nginx连接的特性 // 如1个word能同时允许多少连接 worker_connections 1024; // 这是指 一个子进程最大允许连1024个连接 }
3、http段
http { //这是配置http服务器的主要段 Server1 { // 这是虚拟主机段 Location { //定位,把特殊的路径或文件再次定位 ,如image目录单独处理 } /// 如.php单独处理 } Server2 { } }
4、server块
server { listen 80;//监听的端口 server_name localhost;//监听的域名,如果有域名此处可以改为域名 //访问域名时跳转到的文件夹 location / { root html;//此处为文件夹的路径,可以为绝对路径,也可以是基于nginx的相对路径 index index.html index.htm;//此处为只输入域名,跳转到的首页 } //在此处加日志,可以添加单独的日志文件 access_log logs/8099.log main;//main为日志文件的格式,需要将上面的注释打开才能使用 }
5、日志格式
1、默认的日志格式: main
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; 如默认的main日志格式,记录这么几项 远程IP- 远程用户/用户时间 请求方法(如GET/POST) 请求体body长度 referer来源信息 http-user-agent用户代理/蜘蛛 ,被转发的请求的原始IP http_x_forwarded_for:在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP
2、声明一个独特的log_format并命名
log_format mylog '$remote_addr- "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; 在server段中,这样来声明 Nginx允许针对不同的server做不同的Log ,(有的web服务器不支持,如lighttp) access_log logs/access_8080.log mylog; 声明log log位置 log格式;
6、将nginx的日志按时间划分并保存
凌晨00:00:01,把昨天的日志重命名,放在相应的目录下 再USR1信息号控制nginx重新生成新的日志文件 具体脚本: #!/bin/bash base_path='/usr/local/nginx/logs' log_path=$(date -d yesterday +"%Y%m") day=$(date -d yesterday +"%d") mkdir -p $base_path/$log_path mv $base_path/access.log $base_path/$log_path/access_$day.log #echo $base_path/$log_path/access_$day.log kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` 定时任务 Crontab 编辑定时任务 01 00 * * * /xxx/path/b.sh 每天0时1分(建议在02-04点之间,系统负载小)