开发者学堂课程【Nginx 企业级 Web 服务实战:Nginx 基础介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/649/detail/10752
Nginx 基础介绍(一)
内容介绍
一、 Nginx 基础:
1.1: Nginx 功能介绍:
1.1.1:基础特性:
1.1.2:和web 服务相关的功能:
1.2: Nginx 组织结构:
1.2.1:组织模型:
1.2.2:进程间通信:
1.3: Nginx 模块介绍:
一、Nginx 基础
Nginx: engine X,2002年开始开发,2004年开源,2019年3月11日,Nginx 公司被FS Networks 以6.7亿美元收购,Nginx 官网: http://nginx.org,
Nginx 商业版为 Nginx Plus: https://www.nginx.com/products/nginx/
Nginx 则是免费的、开源的、高性能的 HTTP 和反向代理服务器、邮件代理服务器、以及 TCPUDP 代理服务器解决 C10K 问题(10K Connections) , http://www.ideawu.net/blog/archives/740.html
nginx 的其它的二次发行版:
Tengine:由淘宝网发起的 Web 服务器项目。
它在 Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性,
Tengine 的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验,它的最终目标是打造一个高效、稳定、安全、易用的 Web 平台,从2011年12月开始,Tengine 成为一个开源项目,官网 http://tengine.taobao.org/
Tengine 在兼容 ngix 所有配置,在基础上添加很多特性。
如:
组合多个 CSS,JavaScript 文件的访问请求变成一个请求
(ngx_http_concat_module - The Tengine Web Server (taobao.org
))。该模块类似于 apache 中的 mod_concat 模块,用于合并多个文件在一个响应报文中。
将请求的参数放在两个问号('??')后,
比如:
http://example.com/??style1.css,style2.css,foo/style3.css
作用:将多个页面的请求合并成一个,减少请求次数,缓解服务端 TCP 压力
OpenResty:基于 Nginx 与 Lua语 言的高性能 Web 平台,章亦春团队开发,
1.1: Nginx功能介绍:
静态的 web 资源服务器 html,图片,css,txt 等静态资源
结合 FastCGl/Uwsgi/SCGl 等协议反向代理动态资源请求
FastCGl 结合 PHP,Uwsgi 结合 python
http/https 协议的反向代理
使得 nginx实现证书代理,提高网站安全性
目前一线网站,代理证书都是加密的。如下图淘宝网,证书是加密的
imap4/pop3协议的反向代理。
邮件代理,很少公司自己搭邮件服务,都是购买企业邮箱
tcp/udp 协议的请求转发(反向代理)
1.9版本后出现,早期只支持 HTTP
1.1.1:基础特性:
特性:
模块化设计,较好的扩展性
高可靠性:远高于 apache
支持热部著:不停机更新配置文件,升级版本,更换日志文件(日志切割)
Nginx 和 tomcat 的日志区别:
tomcat 每天自动生成一个日志,而 Nginx 会不断往一个日志文件写内容,直到文件写满,需要配置日志切割
低内存消耗:10000个 keep-alive 连接模式下的非活动连接,仅需2.5M内存
event-driven, aio,mmap, sendfile
基本功能:
静态资源的 web 服务器:专门用于高并发执行的静态资源文件
比如淘宝网中 JS 文件:
不同地方的加载的静态资源服务器不同,访问资源时,会加载离访问端最近的服务器的资源。
如下图为 g.alicdn.com/alilog/mlog/apuls_v2.js 文件内容
多域名好处:浏览器同时发送请求,加速网站响应时间。
如下图:
rel=”dns-prefetch”:预检查,浏览器向多个域名并行发送请求,加速资源加载
http 协议反向代理服务器(如下图):
在访问服务时,有些 nginx 是无法处理的,于是将请求发送给多个 nginx,但这样无法保持所有 nginx 的一致性,所以用共享存储的方式挂载(图中 NAS),无论请求发送到那个nginx 上都可以从同一个目录下开始。
但有些是处理不了的,比如一些 tomcat 的 java 请求中有很多 jar 包,这时可以用http 协议反向代理服务器,将请求转到 tomcat 服务器。
pop3/imap4 协议反向代理服务器
FastCGI( LNMP ) , uwSGI(python) 等协议
模块化(非 Dso),如 zip, SSL 模块
在 nginx 的配置文件下,加入需要的模块,编译后,再 reload 重置,nginx 就支持该模块的配置。比如:Tengine 中,加载l ua 和 memcached 的模块。
例子:
worker_processes 1;
dso {
load ngx_http_lua_module.so;
load ngx_http_memcached_module.so;
}
events {
worker_connections 1024;
}
1.1.2︰和 web 服务相关的功能:
虚拟主机(server)
支持 keep-alive 和管道连接(利用一个连接做多次请求)
访问日志(支持基于日志缓冲提高其性能)
url rewirte :改变请求目的,如请求 a 文件(域名),返回一个 b 文件(域名)
路径别名
基于 IP 及用户的访问控制
支持速率限制及并发数限制:利用 nginx 做一个下载站,并实现限速和并发数限制。
比如:在https://developer.aliyun.com/mirror/ 中下载镜像,如图中从下载地址中复制,打开。
可以看到一个用 nginx 搭建的下载站
可以设置用来应对并行下载和攻击问题,一般在防火墙进行配置,根据公网的请求数来判断是否为攻击,从而限制下载数量。
重新配置和在线升级而无须中断客户的工作进程:nginx设 立一个子进程,处理在新的配置下的新的访问请求,而在旧配置中的请求,不会中断,而是等旧配置中的请求全结束后,回收旧配置。