首页 > 系统相关 >Nginx随笔

Nginx随笔

时间:2024-03-05 13:45:48浏览次数:26  
标签:并发 请求 nginx Nginx 服务器 随笔 连接

Nginx的工作原理

Nginx的工作原理主要基于其独特的事件驱动架构和异步非阻塞的I/O模型。其核心由一个master进程和多个worker进程组成,采用事件循环的方式监听并处理各种事件,如网络请求、I/O操作等。这种架构使得Nginx能够轻松应对大量并发连接,同时保持出色的性能。

Nginx由内核和一系列模块组成。内核提供web服务的基本功能,如启用网络协议、创建运行环境、接收和分配客户端请求、处理模块之间的交互。模块实现Nginx的各种功能和操作,从结构上分为核心模块、基础模块和第三方模块。这些模块直接处理请求,进行输出内容和修改headers信息等操作。当一个HTTP请求到达时,Nginx通过查找配置文件将请求映射到一个location block,而此location中所配置的各个指令则会启动不同的模块去完成工作。

Nginx的高性能得益于其事件驱动架构和异步非阻塞的I/O模型,以及模块化的设计。它不会为每个连接创建一个新的线程或进程,而是使用事件循环来监听和处理各种事件。当一个新的连接请求到达时,Nginx会将其放入事件队列中等待处理,然后继续监听其他事件,而不会阻塞等待该连接的处理结果。当连接的数据准备好或I/O操作完成时,Nginx会通过回调函数来处理这些事件。这种异步非阻塞的处理方式使得Nginx能够同时处理大量的并发连接,而不会因为某个连接的阻塞而影响其他连接的处理。

此外,Nginx的模块化设计使得其易于开发和扩展,用户可以根据自己的需要开发新的模块来增强Nginx的功能。这也正是Nginx功能如此强大的原因之一。

nginx用途

Nginx是一种高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。其主要用途包括:

  1. Web服务器:Nginx可以作为静态资源的web服务器,处理静态文件,如图片、文件等。由于其高效的处理能力和资源使用效率,特别适合用于处理大量的并发连接。
  2. 负载均衡:Nginx可以作为负载均衡服务器,将用户的请求按照一定的策略分发到不同的后端服务器上,以实现服务的负载均衡,避免服务器单节点故障。Nginx支持多种负载均衡方式,如IP Hash、URL Hash、轮询、加权轮询,加权最少连接等。
  3. Web缓存加速:Nginx可以用于缓存Web静态资源,如HTML、JS、CSS等,提高网站的访问速度。通过配置Nginx的缓存策略,可以将频繁访问的数据缓存在本地,减少对后端服务器的请求压力。
  4. 反向代理:Nginx可以作为反向代理服务器,将用户的请求转发到后端的应用服务器上,然后将处理结果返回给用户。这种方式可以实现应用的解耦和扩展,提高系统的可用性和可扩展性。
  5. 虚拟主机:Nginx支持虚拟主机功能,可以在同一台服务器上运行多个网站或应用,每个网站或应用都有自己的域名和配置。这种方式可以充分利用服务器资源,降低运营成本。一个server标签可以对应一个虚拟主机。

Nginx是一种功能强大的服务器软件,广泛应用于Web开发、负载均衡、缓存加速、反向代理等领域。

Nginx的安装(LINUX)

在线安装

在Linux上安装Nginx,可以按照以下步骤进行操作:

  1. 首先,确保Linux系统已经连接到互联网,并且具有sudo或root权限,以便能够安装软件包。

  2. 准备好Nginx的安装包。可以从Nginx官方网站下载最新版本的Nginx安装包,或者根据Linux发行版使用包管理器进行安装。对于基于Debian的系统(如Ubuntu),可以使用apt包管理器;对于基于Red Hat的系统(如CentOS),可以使用yum包管理器。

    对于使用apt的系统,运行以下命令安装Nginx:

    sudo apt update
    sudo apt install nginx
    

    对于使用yum的系统,运行以下命令安装Nginx:

    sudo yum update
    sudo yum install nginx
    
  3. 安装过程中,可能需要确认安装和配置一些依赖项。按照提示进行操作即可。

  4. 安装完成后,Nginx服务将自动启动。可以使用以下命令来检查Nginx服务的状态:

    sudo systemctl status nginx
    

    如果服务正在运行,将看到类似“active (running)”的状态信息。

  5. 接下来,可以通过浏览器访问您的服务器的IP地址或域名,以及Nginx默认的端口(通常是80端口),来验证Nginx是否成功安装并正在运行。例如,在浏览器中输入http://<your_server_ip>http://<your_domain_name>

  6. 如果一切正常,将看到Nginx的默认欢迎页面,这表明Nginx已成功安装并配置。

离线安装

nginx编译安装

配置文件nginx.conf

nginx.conf 是 Nginx 的主配置文件,它定义了如何启动 Nginx 服务器以及如何处理传入的连接和请求。该文件可以包含其他配置文件,通常这些文件位于 /etc/nginx/conf.d//etc/nginx/sites-available//etc/nginx/conf.d/default.d/ 目录中。

以下是一些常见的 nginx.conf 中的配置选项及其作用:

  1. worker_processes:
    定义 Nginx 使用的 worker 进程数量。通常设置为 CPU 核心数,以充分利用多核处理器。

  2. events:
    定义 Nginx 的事件处理模型。

    • worker_connections: 每个 worker 进程允许的最大连接数。
  3. http:
    定义 HTTP 服务器。

    • include: 用于包含其他配置文件。

    • server: 定义一个虚拟主机(或称为一个服务器块),可以包含多个 location 块。

      • listen: 定义服务器监听的 IP 地址和端口。
      • server_name: 定义服务器的域名或 IP 地址。

      location: 用于定义如何响应特定的请求 URI。

      • root: 定义请求的根目录。
      • index: 定义默认索引文件。
      • proxy_pass: 将请求转发到另一个服务器(反向代理)。
      • try_files: 尝试按顺序提供文件,如果第一个文件不存在,则尝试下一个。
      • access_log: 定义访问日志的位置和格式。
      • error_log: 定义错误日志的位置和级别。
  4. stream:
    定义 TCP/UDP 代理服务器。通常用于代理非 HTTP/HTTPS 的流量,如 SMTP、POP3、IMAP 等。

    • server: 定义一个流服务器块。

      • listen: 定义服务器监听的 IP 地址、端口和协议。
      • proxy_pass: 将流数据转发到另一个服务器。
  5. mail:
    定义邮件服务器。不常用,除非你需要配置 Nginx 作为邮件代理。

  6. upstream:
    定义后端服务器组,常用于负载均衡配置。

    • server: 定义后端服务器地址、端口以及权重、备份等属性。
  7. variables:
    在配置中使用的变量,如 $host$request_uri 等,这些变量可以在 location 块中用于条件判断、日志记录等。

  8. directives:
    指令是配置文件中用于控制 Nginx 行为的语句,如 add_headerexpiresssl_certificate 等。

每个配置项都有其特定的用途和语法,正确的配置可以确保 Nginx 以高效、安全的方式提供服务。修改配置文件后,通常需要重新加载或重启 Nginx 以使更改生效。通常可以运行下面的命令:

nginx -s reload

小记:
在Nginx中,并发连接数指的是客户端向服务器发起请求并建立了TCP连接的总和。这些连接在每秒钟内被服务器处理,并且它们是并发处理的,即多个连接在同一时刻被处理,但不是同时执行。每个TCP连接可能包含多个HTTP请求,只要TCP连接没有断连,就被视为一个连接。

当考虑Nginx的并发连接时,需要了解几个关键点:

  1. 连接与请求的区别:一个连接可能包含多个请求,而每个请求通常都在同一个连接内发送。因此,高并发连接数不一定意味着高请求率,但它确实表示了服务器正在处理的并发TCP连接的数量。

  2. 资源消耗:随着并发连接数的增加,系统内存资源的消耗也会增加,因为每个连接都需要一定的内存来处理。因此,合理配置Nginx的并发连接数对于优化服务器性能至关重要。

  3. 负载均衡与并发连接:在负载均衡的场景中,Nginx作为反向代理服务器,会接收来自客户端的请求并将其分发到后端服务器。在这种情况下,Nginx的并发连接数指的是它能够同时处理并转发到后端服务器的TCP连接数。

  4. 配置优化:通过调整Nginx的配置参数(如worker_connections),可以优化其并发处理能力。这个参数定义了每个worker进程允许的最大连接数,而Nginx通常使用多个worker进程来处理并发连接。

了解并发连接数的概念和如何优化它是合理配置和调优Nginx服务器性能的关键部分。

标签:并发,请求,nginx,Nginx,服务器,随笔,连接
From: https://www.cnblogs.com/blog-for-xl/p/18053660

相关文章

  • 自已写的shell小程序: 查询删除lua+redis和conf配置的nginx黑名单
    #!/bin/bash#定义一些变量REDIS_HOST=192.168.10.38REDIS_PORT=6370REDIS_AUTH=123456NGINX_BLOCKIPCONF_PATH=/data/software/openresty/nginx/conf.d/block_ip.conf#接收需要查询的IP地址echo-e"查询被www.baiinfo.com屏蔽的IP地址,请输入精确的IP地址(支......
  • nginx在windows下的使用一
    一、nginx常用配置介绍:server块:是什么意思呢?每一个server其实它跟一个虚拟主机有关,虚拟主机就是说从用户的角度来说,一个虚拟主机就是一台独立的机器。有独立的硬件、网络等等。那么每个http块里面有多个server块,意味着一个http块里面有多个独立的虚拟主机。比如这段配置解释:ser......
  • NGINX 配置404错误页面跳转指定页面
    主要是记录踩过的一个坑。。。nginx要自定义404和401的页面,但是error_page配置没有生效,没有正常跳转。 error_page404 /404.html;error_page404=http://www.test.com/error.html;http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_core_module.html#error_......
  • Nginx 最全使用教学
    Nginx最全使用教学Nginx是一款高性能的HTTP和反向代理服务器,也是世界上最受欢迎的Web服务器之一。它以其高效、稳定、可扩展的特点而闻名。这份教学将涵盖Nginx的所有核心功能和配置,帮助您从零开始学习Nginx的使用。Nginx简介1.1.Nginx的功能Nginx具有以下主......
  • nginx系列文章01---基础知识
    1.何为反向代理?在介绍反向代理之前,先来了解一下正向代理。正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理,下面是正向代理的原理图。由于工作环境原因,日常工作只能局限于单位的......
  • 数组(基于代码随想录)的随笔
    数组数组基础知识数组是存放在连续内存空间上的相同类型数据的集合。数组的元素是不能删的,只能覆盖。那么二维数组在内存的空间地址是连续的么?Java的二维数组在内存中不是3*4的连续地址空间,而是四条连续的地址空间组成!数组的经典题目二分法二分法时间复杂度:O(logn)......
  • 随笔记录篇——C++iostream库 以及std
    这篇文章非原创,来自我学习过程中看到的其他博主发的一些资料,解决了我的疑问,在此进行整理。C语言的标准输入输出库是stdio.h库,是一个函数库,而不是类库。其中包含了我们其中所用的scanfpringf都是一些独立的全局函数,因为C语言是不支持类的。C++的标准输入输出库iostream是一个类......
  • 学习随笔数据库
    SQL基本操作CREATETABLEt_book(idINT,NAMEVARCHAR(20),authorVARCHAR(10),priceDOUBLE);--查询数据select*fromt_book;--增加元素INSERTINTOt_book(id,name,author,price)VALUES(1,'三体','刘慈欣',99.9);INSERTINTOt_book(id,name......
  • VScode 配置php调试环境变量. phpstudy + nginx+ php7.4, 解决无法断点问题
    参考大佬的帖子https://www.cnblogs.com/hfdp/p/17028596.htmlhttps://blog.csdn.net/qq_61739597/article/details/132433472 (远程调试)踩坑经验我从phpstudy添加好网站才进行配置.当配置好之后,一直没有断点下来. 非常郁闷找不到问题. 写了一个demo,php文件,通过......
  • log4net使用随笔
    问题背景使用log4net想根据不同的配置,根据业务场景自定义日志文件的写入此文解决的问题怎么开启log4net的调试日志信息怎么全局配置日志信息解决思路配置文件中增加一个appender,更换规则,查看是否能够做到写入指定的配置文件常见问题增加配置文件后,一直只使用默认......