Nginx服务器
+ -

Nginx 简介

2019-09-09 33 0

Nginx[读音:engine x]是HTTP和反向代理服务器,邮件代理服务器,以及IgorSysoev最初编写的通用TCP/UDP代理服务器。在很长一段时间以来,它一直在许多负载重的俄罗斯网站上运行,包括:Yandex,Mail.Ru,VK和Rambler。
根据Netcraft的说法,Nginx在2017年3月份服务或代理了28.50%的最繁忙的网站。这里有一些成功案例:Netflix,Wordpress.com,FastMail.FM。

源代码和文档按照两条BSD类许可证分发。
商业支持可从Nginx,Inc.获得。

基本的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测试;
  • nginScript。

架构和可扩展性

  • 一个主和几个工作进程; 工作进程在非特权用户下运行;
  • 灵活配置;
  • 重新配置和升级可执行文件,而不会中断客户端服务;
  • 支持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+);
  • 支持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内存;
  • 数据复制操作保持最小。

经测试的操作系统和平台

  • FreeBSD 3 — 11 / i386; FreeBSD 5 — 11 / amd64;
  • Linux 2.2 — 4 / i386; Linux 2.6 — 4 / amd64; Linux 3 — 4 / armv6l, armv7l, aarch64, ppc64le;
  • Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
  • AIX 7.1 / powerpc;
  • HP-UX 11.31 / ia64;
  • macOS / ppc, i386;
  • Windows XP, Windows Server 2003.

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特性

在传统的Web服务器体系结构中,每个客户端连接作为一个单独的进程或线程处理,随着网站的流行度增加,并发连接数量的增加,Web服务器减慢,延迟了对用户的响应。

从技术的角度来看,产生一个单独的进程/线程需要将CPU切换到新的任务并创建一个新的运行时上下文,消耗额外的内存和CPU时间,从而对性能产生负面影响。

NGINX开发的目标是实现10倍以上的性能,优化服务器资源的使用,同时也能够扩展和支持网站的动态增长。
因此,NGINX成为最知名的模块化,事件驱动,异步,单线程Web服务器和Web代理之一。

0 篇笔记 写笔记

ObjectiveC 简介
Objective-C,Objective C入门,Objective C教程,ObjectiveObjective-C是一种通用的,面向对象的编程语言,它将Smalltalk样式的消息传递添加到C编程语言中。它是苹果公司用于OSX和iOS操作系统及其API(Cocoa和Cocoa Touch)的主......
SQLite 简介
SQLite是一个轻型的数据库,无需任何服务,无需任何配置的绿色数据库。SQLite是一个进程内库,它实现了一个自包含、无服务器、零配置、事务性SQL数据库引擎。SQLite的代码在公共域中,因此可以免费用于任何目的,无论是商业还是私有。SQLite是世界上部署最广泛的数据库,其应用程序比我们所能统......
设计模式 简介
设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码......
Perl 简介
Perl,一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发。Perl语言的应用范围很广,除CGI以外,Perl被用于图形编程、系统管理、网络编程、金融、生物以及其他领域。由于其灵活性,Perl被称为脚本语言中的瑞士军刀。Pe......
ADO.Net简介
ADO.NET是.Net Framework的一个模块,用于建立应用程序和数据源之间的连接。数据源可以是诸如SQL Server和XML。ADO.NET由可用于连接,检索,插入和删除数据的类组成。所有ADO.NET类都位于System.Data.dll中,并与位于System.Xml.dll中的X......
MongoDB 简介
什么是MongoDB ?MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>va......
MakeFile 简介
Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。在 UNIX 系统中,习惯使用 Makefile 作为 m......
Libuv 网络简介
在 libuv 中,网络编程与直接使用 BSD socket 区别不大,有些地方还更简单,概念保持不变的同时,libuv 上所有接口都是非阻塞的。它还提供了很多工具函数,抽象了恼人、啰嗦的底层任务,如使用 BSD socket 结构体设置 socket 、DNS 查找以及调整各种 socket 参数......
简介
qt学习笔记......
MongoDB NoSQL 简介
NoSQL(NoSQL = Not Only SQL ),意即”不仅仅是SQL”。在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理。 1970年 E.F.Codd’s提出的关系模型的论文 “A relationalmodel of da......
Bochs 简介
Bochs(读音Box)一个基于LGPL许可发行开源代码的x86,x86-64 IBM PC兼容机的模拟器和调式工具。它支持X86 AMD64CPU,内存,硬盘,显示器,以太网卡,BISO及常见的兼容IBM PC的硬件外设的虚拟仿真。Bochs官网:http://bochs.sourceforge.......
C++ 简介
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++ 被认为是一种 中 级语言,它综合了高级语言和低级语言的特点。C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ ......
Nasm 简介
机器语言每种类型的CPU都能理解它们自己的机器语言。机器语言里的指令是以字节形式在内存中储存的数字。每条指令有它唯一的数字码称为 操作代码 ,或简称为 操作码 。80x86处理器的指令大小不同。操作码通常是在指令的开始处。许多指令还包含指令使用的数据( 例如: 常量或地址)。机器语言很难直接进行编程......
AIML简介
AIML代表人工智能标记语言。 AIML是由 Alicebot 自由软件社区和 Richard S. Wallace博士在1995-2000期间开发。AIML用于创建或自定义Alicebot,这是一个基于A.L.I.C.E(人工语言互联网计算机实体)聊天框应用程序的免费软件。AIML标签以下是AI......
正则表达式 简介
除非您以前使用过正则表达式,否则您可能不熟悉一些术语。但是,毫无疑问,您已经使用过不涉及脚本的某些正则表达式概念。例如,您很可能使用 ? 和 * 通配符来查找硬盘上的文件。? 通配符匹配文件名中的 0 个或 1 个字符,而 * 通配符匹配零个或多个字符。像data(w)?.dat 这样的模式将查......
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!