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

前言

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

1. 学习目标

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

2. Nginx的目录结构

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

yum install -y tree

然后我们输入如下命令:

tree /usr/local/nginx/

在这里插入图片描述
主要配置文件说明

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

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红色框包裹地方。
在这里插入图片描述

  • 指令块

就是由名称和大括号{}组成,指令块可以包含指令块与简单指令。
上面配置中,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配置是否有效
[root@VM-0-10-centos ~]# /usr/local/nginx/sbin/nginx -t

在这里插入图片描述
新建test用户后在重新测试配置:
在这里插入图片描述
这次在重新启动nginx后一切正常。

3.1.2 master_process 与worker_process

master_process **on/off **用来开启和关闭worker进程
在这里插入图片描述
需要注意的是 master_process 指令在reload 命令并不会立刻生效,需要重新停止nginx应用进程在启动才可生效.

在这里插入图片描述
worker_process 设置为2.
在这里插入图片描述

需要注意此指令生效前提是开启了worker进程才可生效,同时如 master_process 一样,reload 命令并不会立刻生效,需要重新停止nginx应用进程在启动才可生效.
在这里插入图片描述

3.1.3 error_log 指令

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

在这里插入图片描述
设置完成后重新加载nginx服务使配置生效
在这里插入图片描述
在nginx随便访问一个不存在的路径,监听错误日志发现错误信息如下所示:
在这里插入图片描述

3.1.4 pid 指令

pid可以定义nginx运行的进程文件路径,这个文件记录了nginx运行的进程号
在这里插入图片描述
查看进程文件记录的进程号如下所示:
在这里插入图片描述

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内置的变量,才为后面我们学习虚拟主机的配置打下坚实的基础。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值