Nginx(1)
文章目录
- 概述
- 基本的HTTP服务器功能
- 其他 HTTP 服务器功能
- 邮件代理服务器功能
- TCP/UDP代理服务器功能
- 架构和可扩展性
- Nginx特性
- web服务器
- 负载均衡
- 邮件代理服务器
- 小结
概述
Nginx是http和反向代理服务器,邮件代理服务器,以及lgor Sysoev最初编写的通用TCP/UDP 代理服务器。
基本的HTTP服务器功能
- 提供静态和索引文件,自动索引; 打开文件描述符缓存;
- 加速反向代理和缓存;负载均衡和容错;
- 通过缓存fastcgi, uwsgi, scgi和memcached服务器来加速支持;负载均衡和容错;
- 模块化架构。过滤器包括gzip,字节范围,分块相应,xslt,ssi和图像变换过滤器。如果由代理或fastcgi/uwsgi/scgi服务器处理,则单页内的多个ssi包含可以并行处理;
- SSL和TLS SNI支持。
- 支持具有加权和依赖关系优先级的HTTP/2.
其他 HTTP 服务器功能
- 基于名称和基于 IP 的虚拟服务器;
- 保持活动和管道连接的支持;
- 访问日志格式,缓冲日志写入,快速日志轮换和 syslog 日志记录;
- 3xx-5xx 错误代码重定向;
- 重写模块:使用正则表达式更改 URI;
- 根据客户端地址执行不同的功能;
- 根据客户端 IP 地址,密码(HTTP Basic 认证)和子请求结果进行访问控制;
- HTTP 引用的验证
- PUT,DELETE,MKCOL,COPY 和 MOVE 方法;
- FLV 和 MP4 流媒体;
- 响应速度限制;
- 限制来自一个地址的同时连接或请求的数量;
- 基于 IP 的地理定位;
- A/B测试;
- 嵌入式Perl
- nginScript。
邮件代理服务器功能
- 使用外部 HTTP 认证服务器将用户重定向到 IMAP 或 POP3 服务器;
- 使用外部 HTTP 认证服务器进行用户认证,并将连接重定向到内部 SMTP 服务器;
- 认证方式:
- POP3:USER / PASS,APOP,AUTH LOGIN / PLAIN / CRAM-MD5;
- IMAP:LOGIN,AUTH LOGIN / PLAIN / CRAM-MD5;
- SMTP:AUTH LOGIN / PLAIN / CRAM-MD5;
- SSL 支持;
- STARTTLS 和 STLS 支持。
TCP/UDP代理服务器功能
- TCP 和 UDP 的通用代理;
- SSL 和 TLS SNI 支持 TCP;
- 负载均衡和容错;
- 基于客户地址的访问控制;
- 根据客户端地址执行不同的功能;
- 限制来自一个地址的同时连接数;
- 访问日志格式,缓冲日志写入,快速日志轮换和 syslog 日志记录;
- 基于 IP 的地理定位;
- A/B 测试;
架构和可扩展性
一个主和几个工作进程; 工作进程在非特权用户下运行;
- 灵活配置;
- 重新配置和升级可执行文件,而不会中断客户端服务;
- 支持 kqueue(FreeBSD 4.1+),epoll(Linux 2.6+),/ dev / poll(Solaris 7 11/99 +),事件端口
(Solaris 10),select 和 poll; - 支持各种 kqueue 功能,包括 EV_CLEAR,EV_DISABLE(临时禁用事件),NOTE_LOWAT,
EV_EOF,可用数据数,错误代码; - 支持各种 epoll 功能,包括 EPOLLRDHUP(Linux 2.6.17+,glibc 2.8+)和 EPOLLEXCLUSIVE(Linux
4.5+,glibc 2.24+);
King 老师 QQ:3147964070 - 支持 sendfile(FreeBSD 3.1+,Linux 2.2+,macOS 10.5+),sendfile64(Linux 2.4.21+)和
sendfilev(Solaris 8 7/01 +); - 文件 AIO(FreeBSD 4.3+,Linux 2.6.22+);
- DIRECTIO(FreeBSD 4.4+,Linux 2.4+,Solaris 2.6+,macOS);
- 接受过滤器(FreeBSD 4.1+,NetBSD 5.0+)和TCP_DEFER_ACCEPT(Linux 2.4+)支持;
- 10,000 个不活动的 HTTP 保持连接大约需要 2.5M 内存;
- 数据复制操作保持最小。
Nginx特性
NGINX 有什么不同? NGINX 使用可扩展的事件驱动架构,而不是更传统的过程驱动架构。这需要更低的内存占用,并且当并发连接扩大时,使内存使用更可预测。在传统的 Web 服务器体系结构中,每个客户端连接作为一个单独的进程或线程处理,随着网站的流行度增加,并发连接数量的增加,Web 服务器减慢,延迟了对用户的响应。从技术的角度来看,产生一个单独的进程/线程需要将 CPU 切换到新的任务并创建一个新的运行时上下文,消耗额外的内存和 CPU 时间,从而对性能产生负面影响。NGINX 开发的目标是实现 10 倍以上的性能,优化服务器资源的使用,同时也能够扩展和支持网站的动态增长。 因此,NGINX 成为最知名的模块化,事件驱动,异步,单线程 Web 服务器和 Web 代理之一。
Nginx 是一个高性能的 Web 和反向代理服务器, 它具有很多非常优越的特性:
web服务器
相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx为我们选择了 epoll and kqueue 作为开发模型。
负载均衡
Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP 代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
邮件代理服务器
Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。Nginx 安装非常的简单,配置文件 非常简洁(还能够支持 perl 语法),Bugs 非常少的服务器:Nginx 启动特别容易,并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。
小结
本篇主要写了nginx的基本特性和一些代理服务器,比如HTTP服务器,Web服务器代理,邮件代理服务器,TCP/UDP代理服务器等等。通过本篇的学习,可以了解nginx的一些通用功能,在我们需要的时候,很快的选择使用它。感兴趣,一起来学习学习。OK,结束。
相关文章:
Nginx(1)
文章目录 概述基本的HTTP服务器功能其他 HTTP 服务器功能邮件代理服务器功能TCP/UDP代理服务器功能架构和可扩展性 Nginx特性web服务器负载均衡邮件代理服务器 小结 概述 Nginx是http和反向代理服务器,邮件代理服务器,以及lgor Sysoev最初编写的通用TCP…...
C# 构建观测者模式(或者为订阅者模型)
前言: 观测者模型的基本理念,就是,我有一个公共的事件,定义好他的事件的触发、数据接口。然后,通过增加订阅者(实例)来订阅这个事件的,或者说观察这个事件。如果事件发生࿰…...
MyBatis入门如何使用操作数据库及常见错误(yml配置)
一,什么是MyBatis 是一款优秀的持久层框架,用于简化jdbc的开发 持久层:指的就是持久化操作的层,通常也就是数据访问层(dao),也就是用来操作数据库。 也就是MyBatis是让你更加简单完成程序与数…...
大数据信用查询什么样的平台比较靠谱?
随着互联网的发展和普及,大数据技术逐渐应用到各行各业中,其中之一就是信用查询领域,大数据信用查询平台能够为用户提供全面、准确的大数据信用评估,然而,由于市场上出现了许多不同的大数据信用查询平台,我…...
后端程序员常犯的错误-本地缓存相关bug和技术思考
1 springboot集成本地缓存基本常识: SpringBoot集成本地缓存性能之王Caffeine示例详解 SpringBoot 缓存之 Cacheable介绍 2 线上问题 2.1 发现过程 接口内的rpc调用报错,error级别的日志被监控平台报警。 2.2 故障排查 2.2.1 代码 Cacheable(cach…...
【收集表单数据】
07 【收集表单数据】 在 React 里,HTML 表单元素的工作方式和其他的 DOM 元素有些不同,这是因为表单元素通常会保持一些内部的 state。例如这个纯 HTML 表单只接受一个名称: <form><label>名字:<input type"text"…...
【前端面试】九、框架
目录 1 Vue2 实现方式 2 Vue3 实现方式 3 React 实现方式 4 Angular 实现方式 1 Vue2 实现方式 Vue2 是目前仍被广泛使用的前端框架之一,其特点包括响应式数据绑定、组件化开发等。 响应式系统:Vue2 使用 Object.defineProperty 来实现数据的响应式。…...
水泥电阻在电源电路中的作用
水泥电阻是将电阻线绕在无碱性耐热瓷件上,外面加上耐热、耐湿及耐腐蚀之材料保护固定并把绕线电阻体放入方形瓷器框内,用特殊不燃性耐热水泥充填密封而成。水泥电阻的外侧主要是陶瓷材质(一般可分为高铝瓷和长石瓷)。 水泥电阻器…...
报销管理软件怎么选?主流的10款对比
国内外排名前十的报销软件大对比:合思、Zoho Expense、金蝶财务报销系统、每刻报销、慧算账、Expensify、齐业成、汇联易、分贝通、QuickBooks Online。 在小型企业中,报销管理可能还可以由财务人员手工完成。然而,对于中到大型企业和快速发展…...
人工智能对就业产生怎样的影响?
在这个飞速发展的时代,人工智能(AI)如同一股不可阻挡的潮流,深刻地影响着我们的工作方式和生活模式。它既是技术革命的产物,也是推动社会进步的重要力量。然而,随着AI技术的普及和应用,关于其对…...
Vue Router 路由守卫详解
Vue Router 的路由守卫功能使我们能够在路由导航的不同阶段执行代码,提供了极大的灵活性和控制力。路由守卫可以帮助我们在用户导航到特定路由之前、之后或取消导航时执行逻辑,例如权限验证、数据获取或取消操作等。 路由守卫类型 Vue Router 提供了以下几种类型的路由守卫…...
Android 10.0 Launcher 启动流程
在前面SystemUI启动流程中说到,在SystemServer中会去启动各种系统服务,这里的launcher也是启动的其中一个服务ActivityManagerService去启动的。在android10之前,系统四大组件的启动都是在ActivityManagerService中,在android10中…...
OPenCV高级编程——OpenCV视频读写及录制技术详解
目录 引言 一、视频读取技术 VideoCapture 类 构造函数 常用方法 二、视频写入技术 VideoWriter 类 构造函数 常用方法 三、视频录制技术 1. 包含OpenCV头文件 2. 初始化VideoCapture对象 3. 设置视频编码器 4. 读取和写入视频帧 5. 释放资源 6. 编码格式选择 …...
jenkins获取sonarqube质量门禁结果
前景 在使用 Jenkins 集成 SonarQube 时,获取质量门禁(Quality Gate)结果非常重要。SonarQube 的质量门禁是一种质量控制机制,用于评估代码质量是否符合预设的标准。以下是获取质量门禁结果的意义和作用: 评估代码质量…...
【AI-12】浅显易懂地说一下损失函数
什么是损失函数? 咱们可以把损失函数想象成一个衡量你做的事情“好不好”的尺子。 比如说你在预测明天的天气,你给出的预测结果和实际的天气情况之间会有差别。损失函数就是用来计算这个差别有多大的。 如果你的预测结果和实际情况非常接近,…...
Python和java中super的使用用法(有点小语法上的差距,老忘就在这里置顶了)
文章目录 1 在 Java 中:2 在 Python 中: 在 Java 和 Python 中,子类调用父类方法的语法略有不同: 1 在 Java 中: 使用 super 关键字:在子类中,可以使用 super 关键字来调用父类的方法。super …...
在 QML 中使用 C++ 类和对象
1.实现 C 类,从 QObject 或 QObject 的派生类继承 类中第一行添加 Q_OBJECT 宏 2.修饰成员函数或属性 Q_INVOKABLE 宏用来定义可通过元对象系统访问的方法 Q_PROPERTY 宏用来定义可通过元对象系统访问的属性 信号或者槽,都可以直接在 QML 中访问 3. 在…...
什么是接口?
在前后端开发的语境中,接口(Interface)是一个非常重要的概念,它充当了前端(通常是浏览器端或移动端应用)与后端(通常是服务器端的应用程序)之间进行数据交换的桥梁。接口定义了双方交…...
传统自然语言处理(NLP)与大规模语言模型(LLM)详解
自然语言处理(NLP)和大规模语言模型(LLM)是理解和生成人类语言的两种主要方法。本文将介绍传统NLP和LLM的介绍、运行步骤以及它们之间的比较,帮助新手了解这两个领域的基础知识。 传统自然语言处理(NLP&…...
实现Obsidian PC端和手机端(安卓)同步
步骤 1:在PC端设置Obsidian 安装Obsidian和Git:确保你的PC上已经安装了Obsidian和Git。你可以从Obsidian官网和Git官网下载并安装。 克隆GitHub代码库:在PC上打开命令行(例如Windows的命令提示符或Mac/Linux的终端)&a…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
