文章目录

  • 前言
  • 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 配置html目录 nginx 网页目录配置_https


主要配置文件说明

名称

说明

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 配置html目录 nginx 网页目录配置_nginx_02

  • 指令块

就是由名称和大括号{}组成,指令块可以包含指令块与简单指令。
上面配置中,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 配置html目录 nginx 网页目录配置_nginx 配置html目录_03

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

nginx 配置html目录 nginx 网页目录配置_运维_04


新建test用户后在重新测试配置:

nginx 配置html目录 nginx 网页目录配置_nginx 配置html目录_05


这次在重新启动nginx后一切正常。

3.1.2 master_process 与worker_process

master_process **on/off **用来开启和关闭worker进程

nginx 配置html目录 nginx 网页目录配置_nginx_06


需要注意的是 master_process 指令在reload

nginx 配置html目录 nginx 网页目录配置_Nginx_07


worker_process 设置为2.

nginx 配置html目录 nginx 网页目录配置_https_08

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

nginx 配置html目录 nginx 网页目录配置_Nginx_09

3.1.3 error_log 指令

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

nginx 配置html目录 nginx 网页目录配置_nginx_10


设置完成后重新加载nginx服务使配置生效

nginx 配置html目录 nginx 网页目录配置_nginx 配置html目录_11


在nginx随便访问一个不存在的路径,监听错误日志发现错误信息如下所示:

nginx 配置html目录 nginx 网页目录配置_https_12

3.1.4 pid 指令

pid可以定义nginx运行的进程文件路径,这个文件记录了nginx运行的进程号

nginx 配置html目录 nginx 网页目录配置_https_13


查看进程文件记录的进程号如下所示:

nginx 配置html目录 nginx 网页目录配置_Nginx_14

3.1.5 include 指令

include 用来指定主配置文件包含的其他扩展配置文件,扩展文件的内容需要符合Nginx的格式规范,可以使用 nginx -t

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