1.nginx是什么?
nginx [engine x] 是 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器,最初由Igor Sysoev编写。
2.nginx下载与安装
3.nginx有哪些功能
3.1基本 HTTP 服务器功能
1.http代理
2.反向代理
3.负载均衡:内置策略和扩展策略
内置策略:轮询,加权轮询,ip hash。
扩展策略:可参照所有的负载均衡算法实现。
轮询:
加权轮询:
ip hash:可以解决session不共享问题。
4.web缓存
加速支持 FastCGI、 uwsgi、 SCGI和 memcached 服务器的缓存; 负载均衡和容错;
模块化架构。过滤器包括 gzipping、字节范围、分块响应、 XSLT、 SSI和图像转换过滤器。如果它们由代理或 FastCGI/uwsgi/SCGI 服务器处理,则可以并行处理单个页面中的多个 SSI 包含;
支持 具有加权和基于依赖的优先级 的HTTP/2 。
3.2其他 HTTP 服务器功能
- 基于名称和基于 IP 的 虚拟服务器;
- 保持活动 和管道连接支持;
- 访问日志格式、 缓冲日志写入、 快速日志轮换和 系统日志记录;
- 3xx-5xx 错误代码 重定向;
- 重写模块: 使用正则表达式更改 URI;
- 根据 客户端地址执行不同的功能;
- 基于 客户端IP地址、 密码(HTTP基本认证)和 子请求结果的访问控制;
- 验证 HTTP 引用者;
- PUT 、DELETE、MKCOL、COPY 和 MOVE方法;
- FLV 和 MP4 流媒体;
- 响应速度限制;
- 限制 来自一个地址 的同时连接 或 请求的数量;
- 基于IP的地理定位;
- A/B 测试;
- 请求镜像;
- 嵌入式Perl;
- njs脚本语言。
3.3邮件代理服务器功能
- 使用外部 HTTP 身份验证服务器 将用户重定向到 IMAP 或 POP3 服务器;
- 使用外部 HTTP 身份验证 服务器进行用户身份验证并将连接重定向到内部 SMTP服务器;
- 认证方式:
- SSL支持;
- STARTTLS 和 STLS支持。
TCP/UDP 代理服务器功能
- TCP 和 UDP 的通用代理 ;
- 对 TCP 的SSL和 TLS SNI支持;
- 负载均衡和容错;
- 基于 客户端地址的访问控制;
- 根据 客户端地址执行不同的功能;
- 限制 来自一个地址 的同时连接数;
- 访问日志格式、 缓冲日志写入、 快速日志轮换和 系统日志记录;
- 基于IP的地理定位;
- A/B 测试;
- njs脚本语言。
架构和可扩展性
- 一个master和几个worker进程;工作进程在非特权用户下运行;
- 灵活配置;
- 在不中断客户端服务的情况下 重新配置 和升级可执行文件;
- 支持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、可用数据数量、错误代码;
- 支持EPOLLRDHUP(Linux 2.6.17+,glibc 2.8+)和EPOLLEXCLUSIVE(Linux 4.5+,glibc 2.24+)等多种epoll特性;
- 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 keep-alive 连接占用大约 2.5M 内存;
- 数据复制操作保持在最低限度。
经过测试的操作系统和平台
- FreeBSD 3 — 12 / i386;FreeBSD 5 — 12 / amd64;FreeBSD 11 / ppc;FreeBSD 12 / ppc64;
- Linux 2.2 — 4 / i386;Linux 2.6 — 5 / amd64;Linux 3 — 4 / armv6l、armv7l、aarch64、ppc64le;Linux 4 — 5 / s390x;
- Solaris 9 / i386、sun4u;Solaris 10 / i386、amd64、sun4v;Solaris 11 / x86;
- AIX 7.1/powerpc;
- HP-UX 11.31 / ia64;
- macOS / ppc, i386, x86_64;
- Windows XP、Windows Server 2003、Windows 7、Windows 10。