nginx配置文件说明

news2024/12/26 2:28:02

Nginx的配置文件说明

Nginx配置文件的主要配置块可以分为三个部分:全局配置块(events和http块),events块和http块。这三个部分共同定义了Nginx服务器的整体行为和处理HTTP请求的方式。

全局配置块:
包含了影响Nginx服务器整体行为的指令,如进程数、工作目录、错误日志级别、进程ID文件路径、用户和组设置等。
全局配置块中的指令对整个Nginx服务器实例生效。
events 块:
处理Nginx服务器与客户端的连接事件。
定义了工作进程数、连接数限制等影响服务器性能和稳定性的参数。
events块通常位于全局配置块内,也可以单独作为一个块。
http 块:
处理HTTP请求,是Nginx配置的核心部分。
包括了解析请求、生成响应、日志记录等指令。
http块可以包含多个子块,如server、location、upstream等,这些子块分别用于配置服务器设置、请求处理位置和后端服务器集群

nginx.conf配置文件说明
```powershell
指令名    指令值;  #全局块,主要设置Nginx服务器整体运行的配置指令 在event和http之外的都是全局块

 #events块,主要设置,Nginx服务器与用户的网络连接
events {     
    指令名    指令值;
}
#http块,是Nginx服务器配置中的重要部分,代理、缓存、日志记录、第三方模块配置...             
http {        
    指令名    指令值;
    server { #server块,是Nginx配置和虚拟主机相关的内容
        指令名    指令值;
        location / { 
        #location块,基于Nginx服务器接收请求字符串与location后面的值进行匹配,对特定请求进行处理
            指令名    指令值;
        }
    }
    ...
}

``

nginx.conf配置文件中默认有三大块:全局块、events块、http块
http块中可以配置多个server块,每个server块又可以配置多个location块。

全局块

1.user:用于配置运行Nginx服务器的worker进程的用户和用户组。

语法user user [group]
默认值nobody
位置全局块

修改user配置 用户必须是存在Linux中的
在这里插入图片描述
如果没有用户可以通过以下命令创建一个

useradd jackwade

测试配置效果
在/root/html/下创建index.html页面,添加如下内容

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
<p><em>I am iron man</em></p>
</body>
</html>

修改nginx.conf配置文件
在对应http下的server模块下添加location配置如下:
在这里插入图片描述

./nginx -s reload 执行重载配置文件命令

访问也会提示403,没有权限
在这里插入图片描述

复制cp index.html /home/jackwade/html/

然后再次修改nginx.conf

location / {
    #root   html;
    root /home/jackwade/html;
    index  index.html index.htm;
}

./nginx -s reload 重新加载配置文件
访问页面
在这里插入图片描述
通过ps -ef | grep nginx命令查看进程 ,可以看到工作进程是"jackwade"
在这里插入图片描述

通过上面的测试,使用user指令可以指定启动运行工作进程的用户及用户组。

work process

master_process:用于关闭 Nginx 的主进程模式,使其只运行一个单一的工作进程.

语法master_process [on off]
默认值master_process on;
位置全局块
master_process off;

作用:master_process:用于关闭 Nginx 的主进程模式,使其只运行一个单一的工作进程

  • 性能影响: 关闭主进程模式会导致 Nginx 只运行一个单一的工作进程,从而不能充分利用多核处理器的优势,影响性能。
  • 稳定性: 在生产环境中使用 master_process off; 可能会影响 Nginx 的稳定性和可扩展性,因此一般不建议在生产环境中使用。
  • 调试用途: master_process off; 常用于开发和调试环境,以简化调试过程和配置测试
    在这里插入图片描述
    关闭后需要重启生效,查看进程里面则没有相应的Master和worker进程
    关闭后查看效果 ps -ef | grep nginx
    在这里插入图片描述
worker_processes

用于定义 Nginx 启动多少个工作进程。通常,设置为与服务器 CPU 核心数相同,以便充分利用多核处理器。

语法worker_processes [number|auto]
默认值worker_processes 1;
位置全局块

设置工作进程 worker_processes 2;
在这里插入图片描述
如果master_process off; 则worker processes 2 设置无效,将之前设置的master_process 注释掉。
同样的该设置需要重新启动才能生效
重启
在这里插入图片描述

设置后的效果
在这里插入图片描述

auto :设置成auto会自动适当的工作进程数,一般等于机器的 CPU 核心数。

daemon守护进程

daemon 指令用于控制 Nginx 是否以守护进程方式运行。默认情况下,Nginx 是以守护进程方式运行的。守护进程不会随着终端关闭而停止。

语法daemon [on | off]
默认值daemon on;
示例daemon off;
位置全局块
pid

用来配置Nginx当前master进程的进程号ID存储的文件路径。

语法pid [文件路径]
默认值pid /usr/local/nginx/logs/nginx.pid
位置全局块、http、server、location
error_log

用来配置Nginx的错误日志存放路径

语法error_log [文件路径] [级别]
默认值error_log /var/log/nginx/error.log warn;
示例error_log /var/log/nginx/error.log debug;
位置全局块、http、server、location

该属性也可以通过./configure --error-log-path=[PATH]来指定
其中日志级别的值有:debug|info|notice|warn|error|crit|alert|emerg,翻译过来为调试|信息|通知|警告|错误|临界|警报|紧急,这块建议设置的时候不要设置成info以下的等级,因为会带来大量的磁盘I/O消耗,影响Nginx的性能。
在这里插入图片描述

include
语法include [文件路径]
默认值
示例include /etc/nginx/conf.d/*.conf;
位置全局块

使用 include指令可以包含指定的配置文件中的配置内容到当前的配置文件中
例如我们include 一个 nginx_main.conf
nginx_main.conf配置内容如下
在这里插入图片描述
在全局块中添加include
在这里插入图片描述

测试配置文件
在这里插入图片描述
重新加载文件 nginx -s reload
查看进程,可以看到是4个jackwade进程,表明引入成功
在这里插入图片描述

http块配置说明

http块

定义MIME-Type

Nginx 的 mime.types 配置文件用于定义文件扩展名与 MIME 类型之间的映射。MIME 类型(Multipurpose Internet Mail Extensions)是一种标准,用于描述文件的类型和格式。通过将文件扩展名与适当的 MIME 类型关联,Nginx 能够正确地告诉浏览器如何处理和显示文件。

在Nginx的配置文件中,http块中默认有两行配置

include mime.types;
default_type application/octet-stream;

在这里插入图片描述
mime.types文件内容
在这里插入图片描述

default_type:用来配置Nginx响应前端请求默认的MIME类型。

语法default_type [MIME 类型]
默认值default_type text/plain;
示例default_type application/octet-stream;
位置http, server, location 块

当请求某些接口时,需要返回指定的文本字符串或 JSON 字符串。如果逻辑非常简单,或者返回的是固定的字符串,可以使用 Nginx 来快速实现。这不仅免去了编写程序来响应请求的麻烦,还可以减少服务器资源的占用,并且提高响应性能

 location /get_text {
   default_type text/plain;
   return 200 "This is Nginx Text Test";
}

在这里插入图片描述

按如上修改配置nginx.conf文件

修改完成后使用nginx -t测试文件是否正确
在这里插入图片描述
使用nginx -s reload重新加载配置文件

测试:
在这里插入图片描述
测试html
添加配置

location /get_html {
    default_type text/html;
    return 200 "<h2>This is Nginx html Test<h2>";
}

修改完成后执行nginx -s reload重新加载配置文件
在这里插入图片描述

返回json格式


```powershell
location /get_json {
    default_type application/json;
    return 200 '{"name":"jack","age":"18","gender":1}';
}
sendfile

sendfile 用于设置 Nginx 服务器是否使用 sendfile() 系统调用来传输文件。sendfile 是 Linux 内核中处理静态资源的一个函数,它可以显著提升从磁盘读取静态资源并返回到前端的过程。

当 Nginx 访问静态资源时,这些资源通常存储在磁盘上。通过启用 sendfile,Nginx 可以直接从磁盘读取数据并发送到网络,而无需在内核空间和用户空间之间进行多次数据复制。这种方式大大提高了静态资源处理的性能,减轻了 CPU 负载,并加快了文件传输速度。

简而言之,启用 sendfile 能显著提高 Nginx 处理静态资源的性能,使得文件传输更加高效。

如下图:
未开启sendfile的处理流程
在这里插入图片描述
开启sendfile的处理流程
在这里插入图片描述

在这里插入图片描述

语法sendfile [on | off]
默认值sendfile off;
示例sendfile on;
位置http, server, location 块

sendfile 指令的解释
语法: sendfile [on | off]
用于启用或禁用 sendfile 功能。
默认值: sendfile off;
默认情况下,sendfile 功能是禁用的。
示例: sendfile on;
启用 sendfile 功能,允许在发送文件时直接从磁盘读取数据并发送到网络,减少数据在内核空间和用户空间之间的复制,提高文件传输效率。

keepalive_timeout

keepalive_timeout:用来设置长连接的超时时间。

为什么要用keepalive_timeout
HTTP是一种无状态协议,客户端向服务端发送一个TCP请求,服务端响应完毕后断开连接。
如果客户端向服务端发送多个请求,那么每个请求都需要重新创建一次连接,效率相对来说比较低,
使用keepalive模式,可以告诉服务器端在处理完一个请求后保持这个TCP连接的打开状态,
若接收到来自这个客户端的其他请求,服务端就会利用这个未被关闭的连接,而不需要重新创建一个新连接,
提升效率,但是这个连接也不能一直保持,这样的话,连接如果过多,也会使服务端的性能下降,这个时候就需要我们进行设置其的超时时间。

语法keepalive_timeout [timeout] [header_timeout]
默认值keepalive_timeout 75s;
示例keepalive_timeout 65s;
位置http, server, location 块

在这里插入图片描述

keepalive_requests

keepalive_requests: 指令用于设置在一个保持活动连接(Keep-Alive)上可以执行的最大请求数。通过限制请求数,可以防止单个连接长时间占用资源,提高服务器的可用性和性能。

语法keepalive_requests [number]
默认值keepalive_requests 100;
示例keepalive_requests 200;
位置http, server, location 块

在这里插入图片描述

events块配置说明

events 块是 Nginx 配置文件 (nginx.conf) 中的重要部分,用于配置与事件处理相关的参数。它主要定义了 Nginx 服务器如何处理客户端连接,以及控制工作进程的行为。这些配置对于优化服务器性能和稳定性至关重要。

accept_mutex 设置Nginx网络连接序列化

语法accept_mutex [on | off]
默认值accept_mutex on;
示例accept_mutex off;
位置events 块

accept_mutex 这个配置主要用于解决常说的"惊群"问题。当客户端发送一个请求连接时,Nginx 作为多进程服务器,会同时唤醒多个 worker 进程,但最终只有一个进程能获取到连接。如果每次唤醒的进程数目太多,就会影响 Nginx 的整体性能。

如果将 accept_mutex 设置为 on(开启状态),Nginx 会对多个进程接收连接进行排队,一个接一个地唤醒进程接收连接,从而防止多个进程争抢连接资源,提高性能。然而,是否开启该配置需要根据实际的生产环境来决定。
例如有时候多个客户端发送了多个请求,改配置为on,这个时候这会逐一去唤醒工作进程,实际上比关闭状态下情况还差了些,浪费了询问的时间。
配置示例:
在这里插入图片描述

multi_accept:设置是否允许同时接收多个网络连接

语法multi_accept [on | off]
默认值multi_accept off;
示例multi_accept on;
位置events 块

multi_accept 的配置决定了 Nginx 的工作进程在有新连接到达时,是一次只处理一个连接,还是一次处理多个连接。

multi_accept off: 默认情况下,每次有新连接到达时,一个工作进程只接受一个连接。这种方式适合普通的请求负载,因为它避免了过多连接堆积在单个进程上,从而导致资源竞争。

multi_accept on: 当启用这个选项时,每次有新连接到达时,一个工作进程会尽可能多地接受新连接。这对于高并发场景是有利的,因为可以一次性处理多个新连接,减少系统调用的开销,提高整体处理效率。
配置示例:
在这里插入图片描述

worker_connections:配置单个worker进程最大的连接数

语法worker_connections [number]
默认值worker_connections 1024;
位置events 块

worker_connections 指令用于设置每个 Nginx 工作进程可以同时处理的最大连接数,这里的连接数不仅仅包括和前端用户建立的连接数,而是包括所有可能的连接数,另外,number值不能大于操作系统支持打开的最大文件句柄数量。

可以通过ulimit -n 查看最大文件句柄数量。
ulimit -n
在这里插入图片描述
配置示例
在这里插入图片描述

use:设置Nginx服务器选择哪种事件驱动来处理网络消息

语法use [方法]
默认值use select;
示例use epoll;
位置events 块

注意:此处所选择事件处理模型是Nginx优化部分的一个重要内容,method的可选值有select/poll/epoll/kqueue等,注意使用epoll需要linux内核在2.6以上才能够使用epoll函数来优化Nginx。

假设 Nginx 服务器是一家餐厅,而事件驱动模型就像餐厅里服务员用来管理桌子的方式:

select: 这是最传统的方式,适用于几乎所有操作系统,但在处理大量连接时效率较低。就像服务员需要逐个查看每张桌子是否有新客人,效率不高。
poll: 这是 select 的改进版本,能够更有效地处理更多的连接。服务员可以查看多个桌子,但还是需要逐个处理。
epoll: 这是 Linux 上最先进的方式,能够高效地处理大量并发连接,适用于高流量的网站。就像服务员有一个智能系统,能够快速找到需要服务的桌子,大大提高了效率。
kqueue: 这是 FreeBSD 上的高效事件驱动模型,类似于 Linux 的 epoll。服务员有一个类似的智能系统,可以快速响应需求。(FreeBSD 是一个类 UNIX 操作系统,基于 BSD (Berkeley Software Distribution) 系统。它主要用于服务器和嵌入式平台,但也可以用作桌面操作系统。)
/dev/poll: 这是 Solaris 上的事件驱动模型,也是一种高效的管理方式。

配置文件配置

events {
    worker_connections  1024;
    accept_mutex on;
    multi_accept on;
    use epoll; #使用epoll
}

另外这些值的选择,我们也可以在编译的时候使用
–with-select_module、#加入到nginx编译环境
–without-select_module、#移除nginx编译环境
–with-poll_module、
–without-poll_module
来设置是否需要将对应的事件驱动模块编译到Nginx的内核。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1939811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3组件样式

在 Vue3开发中&#xff0c;我们经常需要对元素的类和样式进行动态控制。本文将详细介绍如何使用 Vue.js 的特性来实现这一目标。 class 绑定 绑定对象&#xff1a; 在 Vue.js 中&#xff0c;我们可以使用对象语法来绑定 class。例如&#xff1a; <div :class"{ act…

卸载顽固的驱动或软件

在Windows系统&#xff0c;有些软件或驱动&#xff0c;为了防止被卸载&#xff0c;特地在C:\Windows\System32\drivers目录里&#xff0c;生成xxx.sys文件。这些xxx.sys文件&#xff0c;无法直接删除&#xff0c;用杀毒软件也很难卸载。     这里介绍一种方法&#xff0c;可以…

基于GTX的64B66B编码的自定义接收模块(高速收发器二十二)

点击进入高速收发器系列文章导航界面 1、自定义PHY顶层模块 前文设计了64B66B自定义PHY的发送模块&#xff0c;本文完成自定义PHY剩余的模块的设计&#xff0c;整体设计框图如下所示。 其中phy_tx是自定义PHY的发送数据模块&#xff0c;scrambler是加扰模块&#xff0c;rx_slip…

阿里云OS Copilot:解锁操作系统运维与编程的智能助手

目录 引言 OS Copilot简介 OS Copilot的环境准备 创建实验资源 安全设置 设置安全组端口 创建阿里云AccessKey 准备系统环境 OS Copilot的实操 场景一、用OS Copilot写脚本和注释代码 场景二、使用OS Copilot进行对话问答 场景三、使用OS Copilot辅助编程学习 清理…

P15-P18-随机梯度下降-自适应学习率-超参数筛选-正则化

文章目录 随机梯度下降和自适应学习率超参数筛选交叉验证 正则化权重衰减Dropout 简介 本文主要讨论了机器学习中随机梯度下降&#xff08;SGD&#xff09;和自适应学习率算法的原理及应用。SGD通过随机选择小批量样本计算损失值&#xff0c;减少了计算量&#xff0c;加快了训练…

国内访问Docker Hub慢问题解决方法

在国内访问Docker Hub时可能会遇到一些困难&#xff0c;但幸运的是&#xff0c;有多种解决方案可以帮助你顺利下载Docker镜像。以下是一些有效的解决方案&#xff1a; 配置Docker镜像源&#xff1a;你可以通过配置Docker的daemon.json文件来使用国内镜像源&#xff0c;比如DaoC…

Spring Web MVC(一篇带你了解并入门,附带常用注解)

一&#xff0c;什么是Spring Web MVC 先看一下官网怎么说&#xff1a; 也就是Spring Web MVC一开始就是包含在Spring框架里面的&#xff0c;但通常叫做Spring MVC。 也可以总结出一个信息&#xff0c;这是一个Web框架。后面我就简称为Spring MVC了。 1.1MVC MVC也就是Mode…

202496读书笔记|《飞花令·菊(中国文化·古典诗词品鉴)》——荷尽已无擎雨盖,菊残犹有傲霜枝

202496读书笔记|《飞花令菊&#xff08;中国文化古典诗词品鉴&#xff09;》——荷尽已无擎雨盖&#xff0c;菊残犹有傲霜枝 《飞花令菊&#xff08;中国文化古典诗词品鉴&#xff09;》素心落雪 编著。飞花令得名于唐代诗人韩翃《寒食》中的名句“春城无处不飞花”&#xff0c…

食南之徒~马伯庸

◆ 第一章 >> 老赵&#xff0c;这你就不懂了。过大于功&#xff0c;要受罚挨打&#xff0c;不合算&#xff1b;功大于过&#xff0c;下回上司有什么脏活累活&#xff0c;第一时间会想到你&#xff0c;也是麻烦多多。只有功过相抵&#xff0c;上司既挑不出你的错&#xf…

Unity 调试死循环程序

如果游戏出现死循环如何调试呢。 测试脚本 我们来做一个测试。 首先写一个死循环代码&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine;public class dead : MonoBehaviour {void Start(){while (true){int a 1;}}}Unity对象设…

Flowable-SpringBoot项目集成

在前面的介绍中&#xff0c;虽然实现了绘制流程图&#xff0c;然后将流程图存储到数据库中&#xff0c;然后从数据库中获取流程信息&#xff0c;并部署和启动流程&#xff0c;但是部署的流程绘制器是在tomcat中部署的&#xff0c;可能在部分的项目中&#xff0c;需要我们将流程…

微信小程序数组绑定使用案例(一)

微信小程序数组绑定案例&#xff0c;修改数组中的值 1.Wxml 代码 <view class"list"><view class"item {{item.ischeck?active:}}" wx:for"{{list}}"><view class"title">{{item.name}} <text>({{item.id}…

武忠祥李永乐强化笔记

高等数学 函数 极限 连续 函数 复合函数奇偶性 f[φ(x)]内偶则偶&#xff0c;内奇则同外 奇函数 ln ⁡ ( x 1 x 2 ) \ln(x \sqrt{1 x^{2}}) ln(x1x2 ​) 单调性 一点导数>0不能得出邻域单调增&#xff0c;加上导函数连续则可以得出邻域单调增 极限 等价无穷小…

达梦数据库的系统视图v$utsk_info

达梦数据库的系统视图v$utsk_info 查询守护进程向服务器发送请求的执行情况。 升级到 V3.0 版本后&#xff0c;此视图仅用于查看当前服务器的命令执行情况&#xff0c;在 CMD 字段值不为 0 时&#xff0c;说明是有效的命令信息&#xff1b;此时如果 CODE 字段值是 100&#xf…

202495读书笔记|《红楼梦(插图本)(童年书系·书架上的经典)》——荣辱自古周而复始,岂是人力所能保的?

202495读书笔记|《红楼梦&#xff08;插图本&#xff09;&#xff08;童年书系书架上的经典&#xff09;》——荣辱自古周而复始&#xff0c;岂是人力所能保的&#xff1f; 摘录人物关系&#xff1a; 《红楼梦&#xff08;插图本&#xff09;&#xff08;童年书系书架上的经典&…

02互联网行业的产品方向(2)

数字与策略产品 大数据时代&#xff0c;数据的价值越来越重要。大多数公司开始对内外全部数据进行管理与挖掘&#xff0c;将业务数据化&#xff0c;数据资产化&#xff0c;资产业务化&#xff0c;将数据产品赋能业务&#xff0c;通过数据驱动公司业务发展&#xff0c;支撑公司战…

学习周报:文献阅读+Fluent案例+水动力学方程推导

目录 摘要 Abstract 文献阅读&#xff1a;物理信息神经网络学习自由表面流 文献摘要 讨论|结论 预备知识 浅水方程SWE&#xff08;Shallow Water Equations&#xff09; 质量守恒方程&#xff1a; 动量守恒方程&#xff1a; Godunov通量法&#xff1a; 基本原理&…

嵌入式Linux学习: platform 设备驱动实验

在Linux中&#xff0c;Platform&#xff08;平台&#xff09;机制是一个重要的设备驱动管理框架&#xff0c;它主要在Linux 2.6内核及以后的版本中引入。Platform机制的主要目的是提供一种统一的方式来管理那些不直接挂靠在传统物理总线&#xff08;如USB、PCI、I2C、SPI等&…

单链表的应用(3)

返回倒数第k个结点 实现一种算法&#xff0c;找出单向链表中倒数第 k 个节点。返回该节点的值。 思路&#xff1a; 利用快慢指针&#xff0c;先让快指针走k步快慢指针一起往后遍历&#xff0c;直到快指针到达链表的末端此时的慢指针就是链表的倒数第k个结点 int kthToLast(…

昇思MindSpore学习总结十六 —— 基于MindSpore的GPT2文本摘要

1、mindnlp 版本要求 !pip install tokenizers0.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 该案例在 mindnlp 0.3.1 版本完成适配&#xff0c;如果发现案例跑不通&#xff0c;可以指定mindnlp版本&#xff0c;执行!pip install mindnlp0.3.1 !pip install mindnlp …