文章目录
一、基础
1.1 what can nginx do
Nginx提供的基本功能服务从大体上归纳为"基本HTTP服务"、“高级
HTTP服务”和"邮件服务"(略)等三大类。
1.1.1 基本HTTP服务
Nginx可以提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服
务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持
包过滤功能,支持SSL等。
- 处理静态文件、处理索引文件以及支持自动索引;
- 提供反向代理服务器,并可以使用缓存加上反向代理,同时完成负载
均衡和容错;【??? 如何缓存加速】 - 提供对FastCGI、memcached等服务的缓存机制,,同时完成负载均
衡和容错; - 使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包括
gzip压缩、ranges支持、chunked响应、XSLT、SSI以及图像缩放
等。其中针对包含多个SSI的页面,经由FastCGI或反向代理,SSI过
滤器可以并行处理。 - 支持HTTP下的安全套接层安全协议SSL.
- 支持基于加权和依赖的优先权的HTTP/2
1.1.2 高级HTTP服务
- 支持基于名字和IP的虚拟主机设置
- 支持HTTP/1.0中的
Keep-Alive
模式和管线(PipeLined
)模型连接
自定义访问日志格式、带缓存的日志写操作以及快速日志轮转。 - 提供3xx~5xx错误代码重定向功能
- 支持重写(
Rewrite
)模块扩展 - 支持重新加载配置以及在线升级时无需中断正在处理的请求
- 支持网络监控
- 支持FLV和MP4流媒体传输
1.1.3 Nginx常用的功能模块
静态资源部署
Rewrite地址重写
正则表达式
反向代理
负载均衡
轮询、加权轮询、ip_hash、url_hash、fair
Web缓存
环境部署
高可用的环境
用户认证模块...
1.1.4 Nginx的核心组成
nginx二进制可执行文件
nginx.conf配置文件
error.log错误的日志记录
access.log访问日志记录
1.2 why nginx?
(1) 速度更快、并发更高
单次请求或者高并发请求的环境下,Nginx都会比其他Web服务器响应
的速度更快。一方面在正常情况下,单次请求会得到更快的响应,另一
方面,在高峰期(如有数以万计的并发请求),Nginx比其他Web服务器更
快的响应请求。Nginx之所以有这么高的并发处理能力和这么好的性能
原因在于Nginx采用了多进程和I/O多路复用(epoll)的底层实现。
(2)配置简单,扩展性强
Nginx的设计极具扩展性,它本身就是由很多模块组成,这些模块的使
用可以通过配置文件的配置来添加。这些模块有官方提供的也有第三方
提供的模块,如果需要完全可以开发服务自己业务特性的定制模块。
(3)高可靠性
Nginx采用的是多进程模式运行,其中有一个master主进程和N多个
worker进程,worker进程的数量我们可以手动设置,每个worker进程
之间都是相互独立提供服务,并且master主进程可以在某一个worker进
程出错时,快速去"拉起"新的worker进程提供服务。
(4)热部署
现在互联网项目都要求以7*24小时进行服务的提供,针对于这一要求,
Nginx也提供了热部署功能,即可以在Nginx不停止的情况下,对Nginx
进行文件升级、更新配置和更换日志文件等功能。
(5)成本低、BSD许可证
BSD是一个开源的许可证,世界上的开源许可证有很多,现在比较流行
的有六种分别是GPL、BSD、MIT、Mozilla、Apache、LGPL。
1.3 安装(略)
1.4 nginx的目录结构
1.5 nginx.conf的几个关键配置
keepalive_timeout
用来设置长连接的超时时间
keepalive_requests
用来设置一个keep-alive
连接使用的次数
server块和location块
可配置内容过多,后续再讲
静态资源
有些写死的内容可以放到nginx ,让流量甚至都不需要到real server了,比如
location /get_text {
#这里也可以设置成text/plain
default_type text/html;
return 200 "This is nginx's text";
}
如何将Nginx作为一个简单的文件下载服务器(实用)
有时需要传递文件给同事,可以把文件放到云主机的nginx服务器上,让同事自己下载。当然tomcat之流也能搞,不过Nginx很简单很强大。
location /download/ {
alias /usr/local/nginx/html/;
if ($request_filename ~* ^.*?\.(html|doc|pdf|zip|docx|txt)$) {
add_header Content-Disposition attachment;
add_header Content-Type application/octet-stream;
}
sendfile on; # 开启高效文件传输模式
autoindex on; # 开启目录文件列表
autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes
autoindex_localtime on; # 显示的文件时间为文件的服务器时间
charset utf-8,gbk; # 避免中文乱码
}