继续学习Nginx~~
请求Nginx默认页面
进入conf/目录下的nginx.conf文件
Nginx的进程模型
- master进程:主进程,引导者,管理worker进程;
- worker进程:工作进程,工作者,初始nginx相关事务;
查看nginx进程
ps -ef|grep nginx
master进程唯一,worker进程默认情况下是一个(可以配多个)
改变工作进程数
默认为1
sudo vim conf/nginx.conf
改变nginx配置之后
#确认修改后nginx配置是否正确
…/sbin/nginx -t
#重新加载nginx配置
…/sbin/nginx -s reload
再次查看nginx进程
master给worker的信号:
./nginx -s stop
./nginx -s quit
./nginx -s reload
./nginx -t
Nginx的进程模型
Worker抢占机制
Nginx事件处理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iLn8vhDA-1586360507128)(C:\Users\vleuschen\Desktop\Nginx的学习\image-20200401230859436.png)]
Nginx默认使用epoll模型;
异步多路复用器;
nginx.conf 配置文件
- main: 全局配置:
- worker_processes: 设置工作进程woker数目
- event:配置工作模式以及连接数;
- http:http模块相关配置;
- server:虚拟主机配置,可以有多个;
- location:路由规则,表达式;
- upstream: 集群,内网服务器;
配置文件内容简单介绍
user root;
#工作进程
worker_processes 1;
# 错误日志 debug info notice warn error crit
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#nginx pid进程
#pid logs/nginx.pid;
events {
# Linux默认使用epoll
use epoll;
# 每个worker允许连接的客户端的最大连接数,根据硬件配置来的
worker_connections 1024;
}
http {
# 导入外部文件,目的是为了提高配置文件的可读性,mime.types位于/usr/local/nginx/conf
include mime.types;
default_type 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;
#提高文件传输的性能
sendfile on;
#文件数据包达到一定规模时才开始发送
#tcp_nopush on;
#客户端连接服务端的时间
#keepalive_timeout 0;
keepalive_timeout 65;
# 开启文件压缩,增加文件传输的效率
#gzip on;
#虚拟主机
server {
# 监听的端口
listen 88;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
# 监听的端口
listen 89;
server_name localhost;
location / {
root html;
index hello.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
nginx.pid打开失败以及失效的解决方案
问题复现:
在启动nginx时,出现以下问题
解决方案:
1、
mkdir /var/run/nginx
2、重新加载时:
发现没有nginx.pid文件
3、进入nginx的sbin目录
./nginx -c /usr/local/nginx/conf/nginx.conf
4、重新启动
./nginx -s reload
Nginx 常用命令
./nginx -s stop :暴力停止,不推荐
./nginx -s quit:优雅停止,主要是不接受额外的请求,现有的请求会知道请求结束
./nginx -t: 在修改完nginx.conf配置文件之后,使用此命令可检测配置文件是否配置有误
./nginx -v: 显示nginx版本
./nginx -V: 显示nginx具体的信息
./nginx : 启动nginx
./nginx -s reload/stop/reload
Nginx日志切割-手动
Nginx的日志默认保存在/var/log/nginx下边,这个是安装nginx时候设置的;
现有的日志文件都会保存在access.log文件中,但是随着时间的推移,这个文件的体积会逐渐庞大,不便开发或者运维人员去查看,所以可以通过把文件切割为多份不同的小文件作为日志,切割规则可以以天
为单位,如果每天有几百G或者几个T的日志,则可以按需以每半天
或者每小时
对日志进行切割;
具体步骤如下
1、创建一个可执行文件: cut_my_log.sh,内容为:
#!/bin/bash
LOG_PATH="/var/log/nginx/"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
#向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 `cat $PID`
2、为cut_my_log.sh添加可执行的权限:
chmod +x cut_my_log.sh
3、测试日志切割后的结果:
./cut_my_log.sh
4、设置定时任务执行切割日志的操作(使用Linux自带的定时任务器)
4.1 安装定时任务:
yum install crontabs
4.2 crontab -e
编辑并且添加一行新的定时任务
*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh
4.3 重启定时任务
service crond restart
- 附:常用定时任务命令:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
crontab -e // 编辑任务
crontab -l // 查看任务列表
- 定时任务表达式
Cron表达式:分为5或6个域,每个域表示一个含义,如下所示:
分 | 时 | 日 | 月 | 星期几 | 年(可选) | |
---|---|---|---|---|---|---|
取值范围 | 0~59 | 0~23 | 1~31 | 1~12 | 1~7 | 2019/2020/2021/… |
-
常用表达式
每分钟执行:*/1 * * * *
每日凌晨执行: 59 23 * * *
每日凌晨一点执行: 0 1 * * *
参考博客:https://www.cnblogs.com/leechenxiang/p/7110382.html