当前位置: 首页 > article >正文

nginx 使用篇 配置

一、介绍

        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.kler.cn/a/298010.html

相关文章:

  • swagger-bootstrap-ui页面空白,也没报错
  • 如何使用 Nginx 部署前端 Vue 项目
  • k8s介绍
  • Rust 程序设计语言学习——面向对象
  • 取反运算符
  • 让图片变成动画,@keyframes:动画制作
  • 二进制方式安装Helm
  • 【Arcgis基础教程】GIS数据制备,空间分析与高级建模实践应用
  • 大模型微调使GPT3成为了可以聊天发布指令的ChatGPT
  • Linux工程管理文件Makefile传递变量-进阶篇
  • 油耳朵耳屎怎么清理?可视耳勺使用方法
  • 分支管理
  • Accelerated Soft Error Testing 介绍
  • 目标检测-小目标检测方法
  • ubuntu 安装配置 ollama ,添加open-webui
  • 【软件工程】CI_CD
  • 【STM32】CAN总线基础入门
  • Linux网络协议栈的实现
  • Unity3D GPUDriven渲染详解
  • 输出CAD图中第一个图元类型——c#实现