nginx是HTTP和反向代理服务器,邮件代理服务器和通用TCP / UDP代理服务器,最初由Igor Sysoev编写。长期以来,它已经在许多负载较重的俄罗斯站点上运行,包括 Yandex, Mail.Ru, VK和Rambler。有需要的小伙伴欢迎来西西下载。
Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向服务器及电子邮件(IMAP/POP3)服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。
基本的HTTP服务器功能
提供静态和 索引 文件, 自动索引 ; 打开文件描述符缓存 ;
带有缓存的加速反向代理; 负载平衡和容错 ;
对FastCGI, uwsgi, SCGI和 memcached 服务器进行缓存的加速支持 ; 负载平衡和容错 ;
模块化架构。过滤器包括 gzipping,字节范围,分块响应, XSLT, SSI和图像转换过滤器。如果由代理服务器或FastCGI / uwsgi / SCGI服务器处理单个页面中的多个SSI包含,则可以并行处理;
SSL和TLS SNI支持;
通过加权和基于依赖项的优先级 支持HTTP / 2。
其他HTTP服务器功能
基于名称和基于IP的 虚拟服务器;
保持活动 和管道连接支持;
访问日志格式, 缓冲日志写入, 快速日志循环和 syslog日志 ;
3xx-5xx错误代码 重定向;
重写模块: 使用正则表达式更改URI;
根据 客户地址执行不同的功能 ;
基于客户端IP地址, 密码(HTTP基本身份验证)和 子请求结果的访问控制 ;
HTTP参考者的 验证 ;
该PUT,DELETE,MKCOL,复制和移动方法;
FLV 和 MP4 流媒体;
响应率限制 ;
限制 来自一个地址的同时连接 或 请求的数量 ;
基于IP的地理位置;
A / B测试 ;
请求镜像 ;
嵌入式Perl ;
njs脚本语言。
邮件代理服务器功能
使用外部HTTP 身份验证 服务器 将用户重定向到 IMAP 或 POP3服务器;
使用外部HTTP 身份验证 服务器的用户身份 验证以及到内部SMTP服务器的连接重定向 ;
认证方式:
POP3:USER / PASS,APOP,AUTH LOGIN / PLAIN / CRAM-MD5;
IMAP:登录,授权登录/普通/ CRAM-MD5;
SMTP:AUTH LOGIN / PLAIN / CRAM-MD5;
SSL支持;
STARTTLS和STLS支持。
TCP / UDP代理服务器功能
TCP和UDP的通用代理;
SSL和TLS SNI对TCP的支持;
负载平衡和容错 ;
基于客户地址的访问控制 ;
根据客户地址执行不同的功能 ;
限制 来自一个地址的同时连接数 ;
访问日志格式, 缓冲日志写入, 快速日志循环和 syslog日志 ;
基于IP的地理位置;
A / B测试 ;
njs脚本语言。
一、双击nginx.exe图标,可见黑窗口一闪而过,启动完毕。
二、命令行到nginx目录,输入nginx启动。(注,此方式命令行窗口无任何提示,且被锁定)
三、命令行到nginx目录,输入start nginx启动,此方式不锁定
启动后,默认情况下(无修改配置),可见到有两个nginx的进程,1个是master process,1个是worker processes。
如果你在配置中配置2个worker_processes,进程中就可以看到1个是master process,2个是worker processes。
测试
默认nginx部署了些静态内容,我们可通过它测试nginx是否在工作。
默认的配置文件(NGINX_HOME/conf/nginx.conf)如下:
通过观察配置文件的非注释项,大概可知:
1、启动了1个worker processes
2、worker_connections,最大并发数为1024
3、include mime.types,引入mime.types文件所声明的文件扩展名与文件类型映射
4、application/octet-stream,默认使用application/octet-stream
5、sendfile,开启高效文件传输模式
6、监听本机“localhost”的80端口
7、映射目录为“当前目录的html目录”
8、出现500、502、503、504错误,则映射到50x.html
浏览地址http://localhost,即可访问其默认页面,即映射到NGINX_HOME/html/index.html
其他静态内容,如html、图片,可自行添加测试。
4. 日志
日志默认位于NGINX_HOME/logs/,可见:
1、access.log,访问日志
2、error.log,异常日志
3、nginx.pid,进程(仅在启动nginx后才有此日志)
2019年9月24日nginx 1.17.4的变化
*)更改:更好地检测HTTP/2中的不正确客户端行为。
*)变更:在处理未完全读取客户端请求体时
返回HTTP/2中的错误。
*) bug修复:“worker_shutdown_timeout”指令可能无法工作时
使用HTTP / 2。
*) bug修复:分割错误可能发生在工作进程中
使用HTTP/2和“proxy_request_buffering”指令。
bug修复:ECONNABORTED错误日志级别为“crit”而不是
使用SSL时在Windows上出现“错误”。
*) bug修复:nginx在使用分块传输时忽略了额外的数据
编码。
*)错误修正:nginx总是返回500错误,如果“返回”指令
在读取客户端请求体时发生错误。
修正:在内存分配错误处理。