nginx 使用篇 配置

news2024/11/16 12:26:59

一、介绍

        1.介绍

Nginx是一个高性能的HTTP和反向代理服务器,同时也是一个邮件代理服务器,它以稳定性、丰富的功能集、简单的配置文件和低系统资源消耗而闻名

作为一个轻量级的服务器,Nginx在处理高并发连接方面表现出色,能够支持高达50,000个并发连接数。它的内存占用少,并发能力强,这使得它在同类型的网页服务器中具有显著优势。由于这些特点,Nginx被广泛用于各种场景,包括作为Web服务器、反向代理、负载均衡器以及动静分离处理等。

        2.配置介绍

        nginx的配置 在conf目录下的nginx.conf文件

        nginx.conf文件 主要分为三部分

        ①全局配置:配置一些全局属性

        ②event配置 例如:worker_connections: 这个指令设置了每个worker进程能够同时开启的最大连接数

        ③http配置 :配置http的相关配置

二、nginx使用基本命令

1.启动:双击nginx.exe或者打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe ,回车即可

2.关闭

(1)输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)

(2)使用taskkill taskkill /f /t /im nginx.exe

  1. taskkill是用来终止进程的,
  2. /f是强制终止 .
  3. /t终止指定的进程和任何由此启动的子进程。
  4. /im示指定的进程名称 .

其他常用命令

三、配置

1.负载均衡

负载均衡的配置写在 http代码块中

        1. nginx通过反向代理服务器实现负载均衡,用户的请求先到达nginx,nginx根据相应的规则分发到多个后端服务器上,以提高系统的可用性和性能。

        2.负载均衡策略:

  • 轮询(默认):按顺序将请求分发到每个服务器。

  • 权重(weight):根据服务器权重进行分发。

  • IP 哈希(ip_hash):根据客户端 IP 地址分发请求,同一个 IP 的请求总是分配到同一个后端服务器。

  • 最少连接(least_conn):将请求分发到当前活动连接最少的服务器。

        3.示例代码

  #动态代理
    upstream xxxde{
        #服务器资源
        server 127.0.0.1:8080 weight=90;
        server 127.0.0.1:8081 weight=10 ;

    }
    server{
         listen       80;
        server_name  localhost;

        #访问80的根目录就会打到这里
        location / {
           proxy_pass   http://xxxde/admin/;
        }
    }

upstream +名字 中配置服务器的资源

在server中 配置负载均衡

2.动静分离

将打包好的前段页面 放在nginx的html目录下

Nginx的动静分离是一种优化Web服务器性能的策略,通过将动态内容和静态内容的请求处理分开,可以显著提高服务器的响应速度和降低后端负载

实现:

  • 配置Nginx服务器:在Nginx配置文件中设置不同的location块,根据请求的资源类型(静态或动态),将请求引导到不同的处理路径。
  • 静态资源缓存:Nginx可以将静态资源缓存起来,从而减少对后端服务器的请求。

示例代码:

  • location /:匹配所有请求,并将其代理到后端服务器。

  • *location ~ .(jpg|jpeg|png|gif|css|js|ico|html)$**:匹配静态资源文件,并直接由 Nginx 处理。root 指定静态资源的根目录,expires 设置浏览器缓存过期时间。

3.限流

Nginx限流是一种通过控制并发连接数或请求速率来保护服务器的机制,以防止过多的请求影响系统性能

          在高并发的网络环境中,突然涌入的大量请求可能会超出服务器的处理能力,导致性能下降甚至崩溃。通过限流,可以平滑处理请求,防止服务器不堪重负。Nginx提供了多个模块来实现限流功能,如limit_conn_zone、limit_req_zone等。

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

    server {
        listen 80;

        location / {
            limit_req zone=mylimit burst=20 nodelay;
            proxy_pass http://xxxde/admin;
        }
    }
}
  • limit_req_zone:定义限流区域,其中 $binary_remote_addr 是客户端 IP 地址,mylimit 是区域名称,10m 是共享内存大小,rate=10r/s 表示每秒最多处理 10 个请求。

  • limit_req:应用限流区域,burst=20 允许的突发请求数, nodelay 表示超过限速的请求立即返回错误而不是排队。

四、总结常见配置

1.全局配置:

        worker_processes 1;配置的作用是设置Nginx的 worker 进程数。

2.event

        worker_connections 1024;用于设置网络连接的参数,表示每个worker进程可以处理的最大并发连接数为1024。

3.http

        ①map $http_upgrade $connection_upgrade{ default upgrade; '' close; }map模块指令,用于根据变量的值来改变另一个变量的值。用来处理协议升级请求的,通常是WebSocket升级,如果请求中包含了升级相关的头信息,Nginx就会尝试进行协议升级;如果没有或请求不包含升级头信息,则正常关闭连接。在websocket时使用

        ②include mime.types;:这个指令用于包含一个名为"mime.types"的文件,该文件包含了各种文件扩展名与对应的MIME类型之间的映射关系。MIME类型是一种标识文件内容类型的标准,例如"text/html"表示HTML文档,"image/jpeg"表示JPEG图像等。通过包含这个文件,Nginx可以自动识别并设置正确的MIME类型,以便客户端能够正确地处理不同类型的文件。

        ③ default_type application/octet-stream;:这个指令设置了默认的MIME类型为"application/octet-stream"。当Nginx无法根据文件扩展名确定具体的MIME类型时,它会使用这个默认值。"application/octet-stream"是一种通用的二进制数据类型,通常用于未知或不可识别的文件类型。这意味着如果请求的文件没有明确的MIME类型,Nginx会将其作为二进制流发送给客户端。

        ④sendfile on;:这个指令启用了sendfile功能。sendfile是一种高效的文件传输方式,它允许操作系统直接将文件内容从磁盘发送到网络套接字,而无需经过用户空间的缓冲区。这样可以节省CPU资源,提高文件传输的速度。当启用sendfile时,Nginx会使用操作系统提供的sendfile系统调用来发送文件,而不是通过读取文件内容并写入套接字的方式。

        ⑤keepalive_timeout 65;:这个指令设置了keep-alive连接的超时时间。keep-alive是一种HTTP/1.1协议的特性,它允许客户端和服务器之间保持持久连接,以便在同一个TCP连接上发送多个请求和响应。keepalive_timeout指定了在没有新的请求到达之前,服务器应该保持连接的时间(以秒为单位)。在这个例子中,keepalive_timeout被设置为65秒。这意味着如果客户端在65秒内没有发送新的请求,服务器将关闭连接。

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

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

相关文章

怎么修复松下相机死机视频只有0字节(0KB)的MDT文件【实测可修复】

死机后视频文件大小仅为0字节 松下S5相机录像死机,关机重新开机后有一个视频文件变成MDT,大小为0KB,录了30多分钟,本应为MOV格式的视频。0字节文件可以修复吗?怎么修复0字节的MDT文件为视频? 数据提取与视…

认知杂谈55

今天分享 有人说的一段争议性的话 I I I I 内容摘要 这篇内容主要有以下要点:首先,人际交往有难度,要让大家都喜欢很难,需学习沟通技巧,可通过看书、关注抖音博主、参加培训班及看罗翔视频片段来提升。其次&#xf…

【C++11 ——— 类的新功能】

C11 ——— 类的新功能 类的新功能默认成员函数类成员变量初始化强制生成默认函数的关键字default禁止生成默认函数的关键字delete 类的新功能 默认成员函数 原来C类中,有6个默认成员函数: 构造函数析构函数拷贝构造函数拷贝赋值重载取地址重载const …

代码随想录刷题day27丨455.分发饼干 ,376. 摆动序列 ,53. 最大子序和

代码随想录刷题day27丨455.分发饼干 ,376. 摆动序列 ,53. 最大子序和 1.贪心算法理论基础 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张&a…

论文《Graph Neural Networks with convolutional ARMA filters》笔记

【ARMA 2021 PAMI】本文介绍了一种新型的基于**自回归移动平均(Auto-Regression Moving Average,ARMA)**滤波器的图卷积层。与多项式滤波器相比,ARMA滤波器提供了更灵活的频率响应,对噪声更鲁棒,能更好地捕…

【每日一题】LeetCode 104.二叉树的最大深度(树、深度优先搜索、广度优先搜索、二叉树)

【每日一题】LeetCode 104.二叉树的最大深度(树、深度优先搜索、广度优先搜索、二叉树) 题目描述 给定一个二叉树 root,我们需要计算并返回该二叉树的最大深度。二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。 思路分…

Uni-app 开发鸿蒙 App 全攻略

一、开发前的准备工作 开发鸿蒙 App 之前,我们需要做好充分的准备工作。首先是工具的安装与配置。 Node.js 的安装:推荐使用 LTS 版本的 Node.js。可以前往 Node.js 的官方网站下载适合自己操作系统的安装包,如 Windows 用户根据自己的系统版…

OpenHarmony鸿蒙开发( Beta5.0)智能风扇设备开发实践

样例简介 智能风扇设备不仅可以接收数字管家应用下发的指令来控制风扇开启的时间,调节风扇挡位,更改风扇定时时间,而且还可以加入到数字管家的日程管理中。通过日程可以设定风扇相关的任务,使其在特定的时间段内,风扇…

【MySQL】MySQL表的操作

目录 创建表的语法创建表的示例查看表的结构进入数据库查看自己在哪个数据库查看自己所在数据库都有哪些表查看表的详细信息查看创建表时的详细信息 修改表修改表名修改表的内容插入几个数据增加一列修改一列的所有属性删除某一列修改列的名称 删除表 创建表的语法 CREATE TAB…

DFS算法专题(二)——穷举vs暴搜vs深搜vs回溯vs剪枝【OF】决策树

目录 1、决策树 2、算法实战应用【leetcode】 2.1 题一:全排列 2.2.1 算法原理 2.2.2 算法代码 2.2 题二:子集 2.2.1 算法原理【策略一】 2.2.2 算法代码【策略一】 2.2.3 算法原理【策略二,推荐】 2.2.4 算法代码【策略二&#x…

图像去噪技术:传统中值滤波与改进中值滤波算法的比较

在数字图像处理中,去噪是一个至关重要的步骤,尤其是在图像受到椒盐噪声影响时。本文将介绍一种改进的中值滤波算法,并与传统的中值滤波算法进行比较,以展示其在去除椒盐噪声方面的有效性。 实验环境 软件:MATLAB图像…

Centos如何配置阿里云的yum仓库作为yum源?

背景 Centos在国内访问官方yum源慢,可以用国内的yum源,本文以阿里云yum源为例说明。 快速命令 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.a…

宏观学习笔记:GDP分析(二)

GDP分析(一)主要是介绍GDP相关的定义以及核算逻辑,本节主要介绍GDP的分析思路。GDP分析主要是2种方法:总量分析和结构分析。 1. 总量分析 1.1 数值选择 一般情况下,分析的对象都是 官方公布的GDP当季值。 1.2 趋势规…

利用发电量和气象数据分析来判断光伏仿真系统的准确性

随着光伏产业的迅速发展,光伏仿真系统通过集成气象数据分析、发电量分析、投融资分析及损耗估算等功能,为光伏项目的全生命周期管理提供了科学依据。 光伏仿真系统集成了气象数据分析、发电量预测、投融资分析、损耗估算及光伏设计等功能。其中&#xf…

qmt量化交易策略小白学习笔记第60期【qmt编程之期权数据--基于BS模型计算欧式期权隐含波动率--内置Python】

qmt编程之获取期权数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 基于BS模型计算欧式期权隐含波动率 基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、期权现价、无风险利…

【880高数】高等数学一刷错题整理

第一章 函数、极限、连续 2024.8.11日 1. 2. 3. 4. 5. 2024.8.12日 1. 2. 3. 4. 5. 6. 7. 8. 2024.8.13日 1. 2. 3. 4. 2024.8.14日 1. 2. 3. 4. 5. 第二章 一元函数微分学及其应用 2024.8.15日 1. 2. 3. 4. 5. 6. 2024.8.16日 1. 2. 3. 4. 5. 2024.8.17日 1. 2. 3. 4…

哈希表 和 算法

1.哈希表的作用:将我们要存储的数据,通过关键字与位置的关系函数,来确定具体的位置。 2.写哈希表时常出现的问题:哈希冲突/矛盾:当多个数据满足哈希函数的映射时出现 解决的方法为: 1)开放地址…

MVC设计模式与delegate

一、MVC MVC就是Model(模型)、View(视图)、Controller(控制器) 例如上面的 excel表, 数据、数据结构就是模型Model 根据数据形成的直观的、用户能直接看见的柱形图是视图View 数据构成的表格…

ABAP JSON处理应用

1. json 转换成内表 通过上传URL获取json数据并转换为内表 json to itab关键字 METHOD get_itab_for_json.DATA : lr_client TYPE REF TO if_http_client,lv_url TYPE string,lv_content_type TYPE string VALUE application/x-www-form-urlencoded,ev_xstrin…

【python报错】ModuleNotFoundError: No module named ‘utils‘

问题 想要用python语言将A文件夹的a.py脚本引用utils文件夹b.py脚本,直接引用:from utils import XXX 导致在vscode编译器报错:ModuleNotFoundError: No module named utils 这里文件夹A和utils是同级目录【其他情况,修改后面代码…