一、Linux下Nginx的安装

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

2.上传Nginx到Linux服务器。

3.安装依赖环境

(1)安装gcc环境

  1. yum install gcc-c++

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

  1. yum install -y pcre pcre-devel

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

  1. yum install -y zlib zlib-devel

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

  1. yum install -y openssl openssl-devel

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

  1. tar -zxvf nginx-1.19.0.tar.gz

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

  1. mkdir /var/temp/nginx -p

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

  1. ./configure \
  2. --prefix=/usr/local/nginx \
  3. --pid-path=/var/run/nginx/nginx.pid \
  4. --lock-path=/var/lock/nginx.lock \
  5. --error-log-path=/var/log/nginx/error.log \
  6. --http-log-path=/var/log/nginx/access.log \
  7. --with-http_gzip_static_module \
  8. --http-client-body-temp-path=/var/temp/nginx/client \
  9. --http-proxy-temp-path=/var/temp/nginx/proxy \
  10. --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
  11. --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
  12. --http-scgi-temp-path=/var/temp/nginx/scgi

配置命令解释:

7.make编译

  1. make

8.安装

  1. make install

9.进入sbin目录启动nginx

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

二、Nginx的进程模型

三、Nginx的事件处理机制

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

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

四、nginx.conf核心配置文件

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

  1. user root;

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

  1. worker_processes 1;

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

4. 设置nginx进程 pid

  1. pid logs/nginx.pid;

5. 设置工作模式

  1. events {
  2. # 默认使用epoll
  3. use epoll;
  4. # 每个worker允许连接的客户端最大连接数
  5. worker_connections 10240;
  6. }

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

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

  1. 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,是指当数据表累积一定大小后才发送,提高了效率。

  1. sendfile on;
  2. tcp_nopush on;

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

  1. #keepalive_timeout 0;
  2. keepalive_timeout 65;

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

  1. gzip on;

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

  1. server {
  2. listen 88;
  3. server_name localhost;
  4.  
  5. location / {
  6. root html;
  7. index index.html index.htm;
  8. }
  9. }

listen 监听端口

server_name localhost、ip、域名

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

root 请求位置

index 首页设置

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

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

步骤:

A.创建可执行脚本

1.创建一个shell可执行的文件:cut_my_log.sh,内容为:

  1. #!/bin/bash
  2. LOG_PATH="/var/log/nginx/"
  3. RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
  4. PID=/var/run/nginx/nginx.pid
  5. mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
  6. mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
  7.  
  8. #向Nginx主进程发送信号,用于重新打开日志文件
  9. kill -USR1 `cat $PID`

2.为脚本文件添加权限

  1. chmod +x cut_my_log.sh

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

  1. ./cut_my_log.sh

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

1.安装定时任务

  1. yum install crontabs

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

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

3.重启定时任务

  1. service crond restart

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

六、定时任务表达式:

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

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

常用表达式:

1.每分钟执行:

  1. */1 * * * *

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

  1. 59 23 * * *

3.每天凌晨1点执行:

  1. 0 1 * * *

Nginx基础知识学习(安装/进程模型/事件处理机制/详细配置/定时切割日志)的更多相关文章

  1. Nginx 基础知识学习

    资料 基础 掘金-前端开发者必备的Nginx知识 介绍的比较综合,正向代理反向代理的区别.负载均衡等知识,都有介绍 静默虚空-Nginx 简易教程 博客园上的一篇推荐文章 简书-全面了解Nginx到底 ...

  2. (转)Linux基础知识学习

    Linux基础知识学习 原文:http://blog.csdn.net/ye_wei_yang/article/details/52777499 一.Linux的磁盘分区及目录 Linux的配置是通过 ...

  3. Nginx基础知识介绍

    Nginx基础知识介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx概述 Nginx是免费的.开源的.高性能的HTTP和正向/反向代理服务器.邮件代理服务器.以及T ...

  4. Vue2基础知识学习

    Vue2基础知识学习 01.初识 new Vue({ el: '#root', //用于指定当前Vue实例为哪个容器服务,值通常为css选择器符 data () { return { } } }); ...

  5. Greenplum入门——基础知识、安装、常用函数

    Greenplum入门——基础知识.安装.常用函数 2017年10月08日 22:03:09 在咖啡里溺水的鱼 阅读数:8709    版权声明:本文为博主原创,允许非商业性质转载但请注明原作者和出处 ...

  6. day63:Linux:nginx基础知识&nginx基础模块

    目录 1.nginx基础知识 1.1 什么是nginx 1.2 nginx应用场景 1.3 nginx组成结构 1.4 nginx安装部署 1.5 nginx目录结构 1.6 nginx配置文件 1. ...

  7. GCC基础知识学习

    GCC基础知识学习 一.GCC编译选项解析 常用编译选项 命令格式:gcc [选项] [文件名] -E:仅执行编译预处理: -S:将C代码转换为汇编代码: -c:仅执行编译操作,不进行连接操作: -o ...

  8. Objective-c基础知识学习笔记

    Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...

  9. Windows内核基础知识-8-监听进程、线程和模块

    Windows内核基础知识-8-监听进程.线程和模块 Windows内核有一种强大的机制,可以在重大事件发送时得到通知,比如这里的进程.线程和模块加载通知. 本次采用链表+自动快速互斥体来实现内核的主 ...

随机推荐

  1. hashmap为什么是二倍扩容?

    这个很简单,首先我们考虑一个问题,为什么hashmap的容量为2的幂次方,查看源码即可发现在计算存储位置时,计算式为: (n-1)&hash(key) 容量n为2的幂次方,n-1的二进制会全为 ...

  2. python叠加矩形框图层

    两种方式以及效果: 方式一,使用PIL.Image.blend方式: from PIL import Image, ImageDraw im = Image.open('d:/tmp/58.249.0 ...

  3. tornado 作业 自定义模板 UIMethod以UIModule

    自定义uimodule s3.py import tornado.ioloop import tornado.web import UIMethod as mt class MainHandler(t ...

  4. I/O方式(本章最重要)

    目录 程序查询方式 程序查询方式接口结构 例题 本节回顾 程序中断方式 中断的基本概念 工作流程 中断请求 分类 中断请求标记 中断响应 判优实现 优先级设置 中断处理过程 中断隐指令 硬件向量法 中 ...

  5. Java 书单

    Java 基础 <Head First Java> 有人说这本书不适合编程新手阅读?其实本书还是很适合稍微有一点点经验的新手来阅读的,当然也适合我们用来温故 Java 知识点. ps:刚入 ...

  6. Graphql Tutorials(Episode 02)

    1.前言 我们在上篇已经了解Graphql的使命以及Graphql的概况,接下来,我们跑起来另外一个Helloworld来开启继续学习. 2.Helloworld(使用Graphql 原生API) 这 ...

  7. redis位操作

    setbit 设置指定key的偏移量处的值 key:键值 offset:二进制数据的偏移量(注意从左开始为第0位) value:要设置的值(0或1) getbit 获取对应key的offset处的值 ...

  8. [日常摸鱼]51nod1237-最大公约数之和V3-杜教筛

    题意:求$\sum_{i=1}^n \sum_{j=1}^n gcd(i,j),n<=1e10$ 之前刚好在UVA上也做过一个这样求和的题目,不过那个数据范围比较小,一开始用类似的方法 $ans ...

  9. Offer经验分享 - 蚂蚁金服、字节跳动、PDD、百度、华为、Paypal - Java社招面经

    年中的时候因为换工作的缘故,陆续参加了华为.蚂蚁.字节跳动.PDD.百度.Paypal的社招面试,除了字节跳动流程较长,我主动结束面试以外,其他的都顺利拿到了Offer. 最近时间稍微宽裕点了,写个面 ...

  10. Python-其他-round()保留小数位时遇到的问题

    最近有一个需求,原有整数计算,改成小数计算,保留一位小数. 于是按照需求,将数据结构由 int 改为 float ,计算时采用round()方法来保留小数位. 第一版代码如下: a = 0.10000 ...