Nginx从入门到精通之nginx详细介绍

前言

nginx是一个HTTP的反向代理服务器、一个邮件理服务器、一个通用的TCP/UDP代理服务器。它是一个在商业上使用非常广泛的网络层中间组件。与Tomcat相比,它具备体积更小,效率更高,占用更少资源,可处理更多的Case优势,深受各大公司喜爱。

Http核心特性

1.提供静态和索引文件,自动索引;打开文件描述符缓存;

location / {
        index index.$geo.html index.html;
}

location / {
    autoindex on;
}

#cache
Example:
open_file_cache          max=1000 inactive=20s;
open_file_cache_valid    30s;
open_file_cache_min_uses 2;
open_file_cache_errors   on;

Syntax: open_file_cache_errors on | off;
Default:    open_file_cache_errors off;
Context:    http, server, location

2.使用缓存加速反向代理;负载均衡和容错性;

location / {
    proxy_pass       http://127.0.0.1:8000;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
}

#更多代理配置属性说明在http://nginx.org/en/docs/http/ngx_http_proxy_module.html#example

#ngx_http_upstream_module是用于定义服务器组的

3.加速支持FastCGI、uwsgi、SCGI和memcached服务器的缓存;负载均衡和容错性;
4.模块化的体系结构。过滤器包括gzipping、字节范围、分块响应、XSLT、SSI和图像转换过滤器。如果由代理或FastCGI/uwsgi/SCGI服务器处理多个SSI包含,则可以并行处理单个页面中的多个SSI;
5.支持SSL和TLS SNI;

Http其他特性

1.构建基于名称、IP的虚拟服务器;
2.支持Keep-alive和pipeline连接;
3.访问日志格式、缓冲日志写入、快速日志旋转和syslog日志记录;
4.3xx-5xx错误code重定向;
5.重写模块:使用正则表达式改变URI;
6.根据客户端地址执行不同的功能;
7.基于客户端IP地址、密码(HTTP基本认证)和子请求结果的访问控制;
8.HTTP引用器的验证;
9.PUT、DELETE、MKCOL、COPY和MOVE方法;
10.FLV、MP4流;
11.响应率限制;
12.限制单个IP连接请求数量;
13.基于IP的地理位置;
14.A/B测试
15.请求镜像

邮件代理服务器特性

1.用户使用外部的Http验证服务器重定向到IMAP、POP3服务器
2.使用外部Http验证服务器进行用户验证,连接重定向到内部的SMTP服务器;
3.验证方式:
a.POP3:USER/PASS.APOP,AUTH LOGIN/PLAIN/CRAM-MD5;
b.IMAP:LOGIN,AUTH LOGIN/PLAIN/CRAM-MD5;
c.SMTP:AUTH LOGIN/PLAIN/CRAM-MD5;
4.SSL支持
5.支持STARTTLS\STLS

TCP、UDP代理服务器特性

1.通用TCP、UDP代理;
2.支持TCP的SSL\TLS SNI;
3.负载均衡和容错性
4.基于客户端地址的访问控制
5.根据客户端地址执行不同功能
6.限制单IP连接数
7.访问日志格式、缓冲日志写入、快速日志旋转和syslog日志记录;
8.基于IP的地理位置
9.AB测试

体系架构与可扩展性

1.一个master和多个worker进程,worker进程在无特权用户下运行;
2.灵活的配置
3.重新配置、升级对于客户端无感
4.支持kqueue (FreeBSD 4.1+)、epoll (Linux 2.6+)、/dev/poll (Solaris 7 11/99+)、事件端口(Solaris 10)、select和poll;
5.支持各种kqueue功能,包括EV_CLEAR、EV_DISABLE(临时禁用事件)、NOTE_LOWAT、EV_EOF、可用数据个数、错误代码;
6.支持EPOLLRDHUP (Linux 2.6.17+, glibc 2.8+)、EPOLLEXCLUSIVE (Linux 4.5+, glibc 2.24+)等epoll特性;
7.sendfile (FreeBSD 3.1+、Linux 2.2+、macOS 10.5+)、sendfile64 (Linux 2.4.21+)和sendfilev (Solaris 8 /01+)支持;
8.File AIO (FreeBSD 4.3+, Linux 2.6.22+);
9.DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);
10.10000个不活跃的HTTP keep-alive连接占用大约2.5M内存;
11.将数据复制操作保持在最低限度。

测试操作系统和平台

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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章