Nginx的目录结构解析及基本指令配置详解

文章目录

    • 前言
    • 1. 学习目标
    • 2. Nginx的目录结构
    • 3. nginx指令与指令块介绍
      • 3.1 全局模块指令详解
        • 3.1.1 user指令
        • 3.1.2 master_process 与worker_process
        • 3.1.3 error_log 指令
        • 3.1.4 pid 指令
        • 3.1.5 include 指令
      • 3.2 event模块指令详解
        • 3.2.1 accept_mutex指令
        • 3.2.2 multi_accept指令
        • 3.2.3 use 指令
    • 总结

前言

在上一篇文章中我们完成了Nginx的入门安装,深入学习Nginx之前需要我们好好了解其安装目录的基本结构以及常用的配置文件,因为通过这些配置文件我们才能使用反向代理、负载均衡等功能。

1. 学习目标

  • 了解Nginx的目录结构
  • 掌握nginx.conf相关配置指令。

2. Nginx的目录结构

首先安装 tree命令,这个命令可以将我们目录以文件树的结构进行展开:

yum install -y tree

然后我们输入如下命令:

tree /usr/local/nginx/

Nginx的目录结构解析及基本指令配置详解_第1张图片
主要配置文件说明

名称 说明
conf 配置文件目录(.default 文件为对应的默认文件)
mime.types 静态文件的MIME类型,nginx会根据不同的文件类型设置不同的Response 的 Content-Type
nginx.conf Nginx主配置文件
html Nginx静态资源html目录
50x.html Nginx访问错误显示的页面
index.html Nginx访问首页显示的页面
logs Nginx访问的日志目录
access.log Nginx请求的日志文件
error.log Nginx请求的错误日志文件
nginx.pid Nginx运行后的进程号
sbin Nginx可执行的文件目录
nginx Nginx启动文件

3. nginx指令与指令块介绍

下面是一个去除了注释的nginx.conf文件内容,下面我们将揭开Nginx指令配置的面纱。

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504 404  /50x.html;
        location = /50x.html {
            root   html;
        }
}

上面的配置中包含两种类型的指令:

  • 简单指令

由名称和参数组成,以空格分隔,以分号结尾,如下面属性名:worker_processes红色框包裹地方。
Nginx的目录结构解析及基本指令配置详解_第2张图片

  • 指令块

就是由名称和大括号{}组成,指令块可以包含指令块与简单指令。
上面配置中,http块全局参数,对整体产生影响;server块是虚拟主机,主要对指定的主机和端口号进行配置,而location块是虚拟主机根据请求的URI进行访问请求匹配。

3.1 全局模块指令详解

指令 说明
user 定义运行nginx的用户及用户组
master_process 定义是否启动nginx的worker进程
worker_process 定义是否启动nginx的worker进程
error_log 定义nginx运行日志的类型以及保存路径
pid 定义nginx运行的pid文件保存路径

3.1.1 user指令

指定nginx工作进程所属用户以及用户组,例如将其分配给test用户及用户组。
Nginx的目录结构解析及基本指令配置详解_第3张图片

## 验证nginx配置是否有效
[root@VM-0-10-centos ~]# /usr/local/nginx/sbin/nginx -t

在这里插入图片描述
新建test用户后在重新测试配置:
Nginx的目录结构解析及基本指令配置详解_第4张图片
这次在重新启动nginx后一切正常。

3.1.2 master_process 与worker_process

master_process **on/off **用来开启和关闭worker进程
Nginx的目录结构解析及基本指令配置详解_第5张图片
需要注意的是 master_process 指令在reload 命令并不会立刻生效,需要重新停止nginx应用进程在启动才可生效.

Nginx的目录结构解析及基本指令配置详解_第6张图片
worker_process 设置为2.
Nginx的目录结构解析及基本指令配置详解_第7张图片

需要注意此指令生效前提是开启了worker进程才可生效,同时如 master_process 一样,reload 命令并不会立刻生效,需要重新停止nginx应用进程在启动才可生效.
Nginx的目录结构解析及基本指令配置详解_第8张图片

3.1.3 error_log 指令

error_log 指令可以设置日志存放的路径

Nginx的目录结构解析及基本指令配置详解_第9张图片
设置完成后重新加载nginx服务使配置生效
在这里插入图片描述
在nginx随便访问一个不存在的路径,监听错误日志发现错误信息如下所示:
在这里插入图片描述

3.1.4 pid 指令

pid可以定义nginx运行的进程文件路径,这个文件记录了nginx运行的进程号
Nginx的目录结构解析及基本指令配置详解_第10张图片
查看进程文件记录的进程号如下所示:
Nginx的目录结构解析及基本指令配置详解_第11张图片

3.1.5 include 指令

include 用来指定主配置文件包含的其他扩展配置文件,扩展文件的内容需要符合Nginx的格式规范,可以使用 nginx -t 测试配置文件内容是否规范,include 指令可以出现在全局参数、location块或server块任何一个地方,同时include也支持通配符,因此nginx的配置文件内容可以分成多个文件,这样精简配置也方便配置文件管理。

3.2 event模块指令详解

指令 说明
worker_connection 定义单个nginx进程最大客户端连接次数
accept_mutex 开启则避免惊群效应
multi_accept 是否允许一个进程可以拥有多个网络连接
use 采用系统何种函数以提高IO性能

3.2.1 accept_mutex指令

accept_mutex 指令可使多个woker进程将以串行方式接入新连接,开启为 on开启后可以避免惊群效应,何为惊群效应?打个比方:你养了三条狗,现在你有一个骨头,如果你将骨头直接扔在它们面前,那么三条狗会同时抢这一个骨头,但最终只能其中一只狗才能抢到骨头,其他的狗只能铩羽而归。这个就相当于accept_mutex为off的效果,但这个时候你主动将这个骨头塞到其中一条狗嘴里,那么其他狗并不会去抢夺这跟骨头,这个就相当于accept_mutex为on的效果。为了避免惊群效应(惊群效应会造成进程上下文切换过多而造成更多的资源浪费),如果在访问量较小的情况下可以默认打开,但如果访问量比较大建议还是关闭。

3.2.2 multi_accept指令

multi_accept 允许接收多个网络连接,即一个worker进程可以接受更多的网络连接,开启可提高nginx访问吞吐量。

3.2.3 use 指令

epoll 是Linux下多路复用IO接口select/poll的增强版本,它可以大大增强IO吞吐量,使用use epoll 可以直接让nginx直接使用linux内核提供的这个函数,提供Nginx的IO吞吐量。

总结

只有熟悉nginx目录及相关配置指令后加上一些nginx内置的变量,才为后面我们学习虚拟主机的配置打下坚实的基础。

你可能感兴趣的:(nginx,nginx,运维,https)