当前位置 博文首页 > Tom-shushu:Nginx基础知识学习(安装/进程模型/事件处理机制/详

    Tom-shushu:Nginx基础知识学习(安装/进程模型/事件处理机制/详

    作者:Tom-shushu 时间:2021-01-16 22:23

    一、Linux下Nginx的安装

    1.去官网 http://nginx.org/download/下载对应的Nginx安装包,推荐使用稳定版本。

    2.上传Nginx到Linux服务器。

    3.安装依赖环境

    (1)安装gcc环境

      yum install gcc-c++

    (2)安装PCRE库,用于解析正则表达式

     yum install -y pcre pcre-devel

     

    (3)安装zlib压缩和解压缩依赖 

     yum install -y zlib zlib-devel

     

    (4)SSL安全的加密套接字协议层,用于HTTP安全传输,即HTTPS 

     yum install -y openssl openssl-devel

     

     4.解压,注意:解压后得到的是源码,需要编译后才可以安装

    tar -zxvf nginx-1.19.0.tar.gz

     

    5.编译前,先创建Nginx临时目录,不然在启动nginx的过程中会报错

    mkdir /var/temp/nginx -p

    6.在nginx目录下面输入如下命令进行配置,目的是为了生成mckefile文件

    ./configure \
    --prefix=/usr/local/nginx \
    --pid-path=/var/run/nginx/nginx.pid \
    --lock-path=/var/lock/nginx.lock \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --with-http_gzip_static_module \
    --http-client-body-temp-path=/var/temp/nginx/client \
    --http-proxy-temp-path=/var/temp/nginx/proxy \
    --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
    --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
    --http-scgi-temp-path=/var/temp/nginx/scgi

    配置命令解释:

     

     7.make编译

    make

    8.安装

    make  install

    9.进入sbin目录启动nginx

    ./nginx
    ##停止
    ./nginx  -s  stop
    ##优雅停止(等客户端没连接了再停止)
    ./nginx  -s  exit
    ##重新加载
    ./nginx  -s  reload

     

    二、Nginx的进程模型

     

     

    三、Nginx的事件处理机制

    1.传统服务器的事件处理机制为一个客户请求后,Master为其创建一个whrker去处理,当发生阻塞时Master又得继续创建新的worker去处理,这样处理效率,并发程度都非常的低。

     

     2.Nginx的事件处理机制为:当用户的请求阻塞时,这个worker还可以异步的继续处理其他用户请求,并发程度大大增加,开销也变得更小了

     

    四、nginx.conf核心配置文件

    1. 设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为nobody

    user root;

    2. worker进程工作数设置,一般来说CPU有几个,就设置几个,或者有多个应用设置为N-1也行

    worker_processes 1;

    3. nginx 日志级别debug | info | notice | warn | error | crit | alert | emerg,错误级别从左到右越来越大

    4. 设置nginx进程 pid

    pid        logs/nginx.pid;

    5. 设置工作模式

    events {
       # 默认使用epoll
       use epoll;
       # 每个worker允许连接的客户端最大连接数
       worker_connections  10240;
    }

    6. http 是指令块,针对http网络传输的一些指令配置

    7. include 引入外部配置,提高可读性,避免单个配置文件过大(比如可以通过include引入server)

    include       mime.types;

    8. 设定日志格式,main为定义的格式名称,如此 access_log 就可以直接使用这个变量了

    各参数的具体意义:

    $remote_addr      客户端ip    

    $remote_user      远程客户端用户名,一般为:’-’    

    $time_local        时间和时区    

    $request            请求的url以及method    

    $status            响应状态码    

    $body_bytes_send         响应客户端内容字节数    

    $http_referer           记录用户从哪个链接跳转过来的    

    $http_user_agent            用户所使用的代理,一般来时都是浏览器    

    $http_x_forwarded_for         通过代理服务器来记录客户端的ip    

    9. sendfile使用高效文件传输,提升传输性能。启用后才能使用tcp_nopush,是指当数据表累积一定大小后才发送,提高了效率。

    sendfile        on;
    tcp_nopush      on;

    10. keepalive_timeout设置客户端与服务端请求的超时时间,保证客户端多次请求的时候不会重复建立新的连接,节约资源损耗。

    #keepalive_timeout  0;
    keepalive_timeout  65;

    11. gzip启用压缩,html/js/css压缩后传输会更快

    gzip on;

    12. server可以在http指令块中设置多个虚拟主机

       server {
               listen       88;
               server_name  localhost;
       
               location / {
                   root   html;
                   index  index.html index.htm;
               }
       }

    listen 监听端口

    server_name localhost、ip、域名

    location 请求路由映射,匹配拦截

    root 请求位置

    index 首页设置

    五、利用定时脚本实现日志的切割

    Nginx目前的日志都存在access.log文件中,但是随着时间的推移,这个文件的内容会越来越多,体积也会越来越大,不便于查看,所以可以通过把这个大的日志文件切割为多分不同的小文件,切割可以以天、小时、分钟等为单位按需要进行切割

    步骤:

    A.创建可执行脚本

    1.创建一个shell可执行的文件: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.为脚本文件添加权限

    chmod +x cut_my_log.sh

    3.执行脚本文件(即进行一次切割:将原日志文件拷贝一份,并且重新打开原日志文件,可以理解为清空原日志文件)

    ./cut_my_log.sh

    B.创建定时任务定期执行脚本

    1.安装定时任务

    yum install crontabs

    2.编辑并添加新的定时任务(定为每分钟执行一次日志脚本)

    crontab  -e
    */1 * * * * /usr/local/nginx/sbin/cut_my_log.sh

    3.重启定时任务

    service crond restart

    以上就完成了Nginx日志的定时切割

    六、定时任务表达式:

    Cron 表达式分为五个或者六个区域,每个区域表示一个含义,如下:

      星期几 年(非必须)
    取值范围 0-59 0-23 1-31 1-12 1-7 2021/2022.....

    常用表达式:

    1.每分钟执行:

    */1 * * * *

    2.每天凌晨(每天晚上23:59)执行:

    59 23 * * *

    3.每天凌晨1点执行:

    0 1 * * *

     

    下一篇:没有了