|
| 1 | +--- |
| 2 | +title: "1. Nginx系列之nginx自我介绍" |
| 3 | +state: Alpha |
| 4 | +--- |
| 5 | +> Nginx作为日趋流行的Web服务,已无处不在,相信做技术的同学不知道它的人很少。作为高性能web服务,无论是大厂bat、又或者是创业公司,都早已离不开它。那么它到底为何如此神秘,就让我一步步来探索吧! |
| 6 | +
|
| 7 | +Nginx[engine x],是一种http和反向代理服务,同时也支持mail代理以及TCP/UDP代理,最初是由lgor Sysoev编写。在很长的一段时间中,它已经支持全世界很多大型网站的稳定运行,这其中就包括bat等诸多大公司。根据Netcraft网站统计显示,截止到2020年五月,nginx已经服务全世界25.62%的繁忙网站。并且其占有率逐年攀升。 |
| 8 | + |
| 9 | +接下来就从一下几个方面介绍nginx强大之处: |
| 10 | + |
| 11 | +## http服务特性 |
| 12 | + |
| 13 | +* 静态文件服务和配置默认首页自动索引;支持文件描述符缓存; |
| 14 | +* 利用缓存加速反向代理;支持负载均衡以及容错; |
| 15 | +* 加速支持FastCGI、uwsgi、SCGI和memcached服务器的缓存;负载平衡和容错; |
| 16 | +* 针对FastCGI,uwsgi,SCGI以及memcached服务的缓存加速支持以及对负载均衡和容错; |
| 17 | +* 模块化架构。过滤器包括gzipping,byte ranges,分块响应,XSLT,SSI和图像转换过滤器。 如果由代理服务器或FastCGI / uwsgi / SCGI服务器处理单个页面中的包含多个SSI,则可以并行处理; |
| 18 | +* SSL以及TLS SNI支持; |
| 19 | +* 通过加权和基于依赖关系的优先级支持HTTP/2; |
| 20 | +* 基于域名和基于ip的虚拟主机; |
| 21 | +* 支持keep-alive和http流水线; |
| 22 | +* 自定义日志格式、日志写缓冲、快速日志滚动以及syslog日志支持; |
| 23 | +* 3xx-5xx错误重定向; |
| 24 | +* 强大的url重写功能; |
| 25 | +* 逻辑化配置,if支持; |
| 26 | +* 可根据客户端ip、密码和子请求结果进行访问控制; |
| 27 | +* http referer验证; |
| 28 | +* 支持webDAV协议; |
| 29 | +* FLV和MP4流支持; |
| 30 | +* 限流; |
| 31 | +* 根据地址对连接数和请求数目进行限制; |
| 32 | +* ip地理位置支持; |
| 33 | +* A/B测试支持; |
| 34 | +* 请求镜像支持; |
| 35 | +* Perl嵌入式; |
| 36 | +* njs脚本语言; |
| 37 | + |
| 38 | +## 邮件代理服务特性 |
| 39 | +* 使用外部http认证服务将用户重定向至IMAP和POP3服务; |
| 40 | +* 使用外部HTTP身份验证服务器的用户身份验证以及到内部SMTP服务器的连接重定向; |
| 41 | +* 认证方式: |
| 42 | + * POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5; |
| 43 | + * IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5; |
| 44 | + * SMTP: AUTH LOGIN/PLAIN/CRAM-MD5; |
| 45 | +* SSL支持; |
| 46 | +* STARTTLS 和STLS支持; |
| 47 | + |
| 48 | +## TCP/UDP代理特性 |
| 49 | +* TCP和UDP通用代理支持; |
| 50 | +* SSL和TLS SNI对TCP支持; |
| 51 | +* 负载均衡以及容错; |
| 52 | +* 基于客户端地址进行访问控制; |
| 53 | +* 根据客户端IP地址创建变量; |
| 54 | +* 同一客户端地址的并发连接数限制; |
| 55 | +* 自定义日志格式、日志写缓冲、快速日志滚动以及syslog日志支持; |
| 56 | +* ip地理位置支持; |
| 57 | +* A/B测试支持; |
| 58 | +* njs脚本语言; |
| 59 | + |
| 60 | +## 体系架构和拓展性 |
| 61 | +* 主master和多worker进程模式;worker进程可运行在非特权模式下; |
| 62 | +* 灵活且强大的配置; |
| 63 | +* 无服务中断的配置重载以及二进制升级; |
| 64 | +* 支持kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select, 和poll; |
| 65 | +* 支持各种kqueue特性,包括EV_CLEAR, EV_DISABLE(临时禁用事件)、LOWAT、EV EOF、可用数据数量、错误代码; |
| 66 | +* 支持各种epoll功能,包括EPOLLRDHUP(Linux 2.6.17 +,glibc 2.8+)和EPOLLEXCLUSIVE(Linux 4.5 +,glibc 2.24+); |
| 67 | +* sendfile(FreeBSD 3.1 +,Linux 2.2 +,macOS 10.5 +),sendfile64(Linux 2.4.21+)和sendfilev(Solaris 8 7/01 +)支持; |
| 68 | +* File AIO (FreeBSD 4.3+, Linux 2.6.22+); |
| 69 | +* DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS); |
| 70 | +* Accept-filters (FreeBSD 4.1+, NetBSD 5.0+) and TCP_DEFER_ACCEPT (Linux 2.4+)支持; |
| 71 | +* 10,000个不活动的HTTP保持活动的连接仅需约2.5m内存; |
| 72 | +* 最低限度的数据集复制; |
| 73 | + |
| 74 | +## 总结 |
| 75 | +基于以上丰富的特性以及极高的性能,Nginx的流行才是当之无愧的;今天我们知道nginx的用途,那我们如何才能用好nginx以及它的每个特性具体使用方式是什么,待我们下回分解。 |
0 commit comments