Nginx系列之nginx自我介绍

Nginx系列之nginx自我介绍

Nginx作为日趋流行的Web服务,已无处不在,相信做技术的同学不知道它的人很少。作为高性能web服务,无论是大厂bat、又或者是创业公司,都早已离不开它。那么它到底为何如此神秘,就让我一步步来探索吧!

Nginx[engine x],是一种http和反向代理服务,同时也支持mail代理以及TCP/UDP代理,最初是由lgor Sysoev编写。在很长的一段时间中,它已经支持全世界很多大型网站的稳定运行,这其中就包括bat等诸多大公司。根据Netcraft网站统计显示,截止到2020年五月,nginx已经服务全世界25.62的繁忙网站。并且其占有率逐年攀升。

接下来就从以下几个方面介绍nginx强大之处:

http服务特性

•静态文件服务和配置默认首页自动索引;支持文件描述符缓存;

•利用缓存加速反向代理;支持负载均衡以及容错;

•加速支持FastCGI、uwsgi、SCGI和memcached服务器的缓存;负载平衡和容错;

•针对FastCGI,uwsgi,SCGI以及memcached服务的缓存加速支持以及对负载均衡和容错;

•模块化架构。过滤器包括gzipping,byte ranges,分块响应,XSLT,SSI和图像转换过滤器。如果由代理服务器或FastCGI / uwsgi / SCGI服务器处理单个页面中的包含多个SSI,则可以并行处理;

•SSL以及TLS SNI支持;

•通过加权和基于依赖关系的优先级支持HTTP/2;

•基于域名和基于ip的虚拟主机;

•支持keep-alive和http流水线;

•自定义日志格式、日志写缓冲、快速日志滚动以及syslog日志支持;

•3xx-5xx错误重定向;

•强大的url重写功能;

•逻辑化配置,if支持;

•可根据客户端ip、密码和子请求结果进行访问控制;

•http referer验证;

•支持webDAV协议;

•FLV和MP4流支持;

•限流;

•根据地址对连接数和请求数目进行限制;

•ip地理位置支持;

•A/B测试支持;

•请求镜像支持;

•Perl嵌入式;

•njs脚本语言;

邮件代理服务特性

•可使用外部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支持;

•负载均衡以及容错;

•基于客户端地址进行访问控制;

•根据客户端IP地址创建变量;

•同一客户端地址的并发连接数限制;

•自定义日志格式、日志写缓冲、快速日志滚动以及syslog日志支持;

•ip地理位置支持;

•A/B测试支持;

•njs脚本语言;

体系架构和拓展性

•主master和多worker进程模式;worker进程可运行在非特权模式下;

•灵活且强大的配置;

•无服务中断的配置重载以及二进制升级;

•支持kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select, 和poll;

•支持各种kqueue特性,包括EV_CLEAR, EV_DISABLE(临时禁用事件)、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 +)支持;

•File AIO (FreeBSD 4.3+, Linux 2.6.22+);

•DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);

•Accept-filters (FreeBSD 4.1+, NetBSD 5.0+) 和 TCP_DEFER_ACCEPT (Linux 2.4+)支持;

•10,000个不活动的HTTP保持活动的连接仅需约2.5m内存;

•最低限度的数据集复制;

总结

基于以上丰富的特性以及极高的性能,Nginx的流行才是当之无愧的;今天我们知道nginx的用途,那我们如何才能用好nginx以及它的每个特性具体使用方式是什么,待我们下回分解。