Nginx 基础介绍(一)|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
.cn 域名,1个 12个月
简介: 快速学习 Nginx 基础介绍

开发者学堂课程【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 平台,章亦春团队开发,

官网:http://openresty.org/cn/  

图片1.png


1.1: Nginx功能介绍:

静态的 web 资源服务器 html,图片,css,txt 等静态资源

结合 FastCGl/Uwsgi/SCGl 等协议反向代理动态资源请求

FastCGl 结合 PHP,Uwsgi 结合 python

http/https 协议的反向代理  

使得 nginx实现证书代理,提高网站安全性

目前一线网站,代理证书都是加密的。如下图淘宝网,证书是加密的

图片2.png

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 文件:

图片3.png

不同地方的加载的静态资源服务器不同,访问资源时,会加载离访问端最近的服务器的资源。

如下图为 g.alicdn.com/alilog/mlog/apuls_v2.js 文件内容

图片5.png

多域名好处:浏览器同时发送请求,加速网站响应时间。

如下图:

rel=”dns-prefetch”:预检查,浏览器向多个域名并行发送请求,加速资源加载

图片6.png

http 协议反向代理服务器(如下图):

在访问服务时,有些 nginx 是无法处理的,于是将请求发送给多个 nginx,但这样无法保持所有 nginx 的一致性,所以用共享存储的方式挂载(图中 NAS),无论请求发送到那个nginx 上都可以从同一个目录下开始。

但有些是处理不了的,比如一些 tomcat 的 java 请求中有很多 jar 包,这时可以用http 协议反向代理服务器,将请求转到 tomcat 服务器。

图片7.png

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/  中下载镜像,如图中从下载地址中复制,打开。

图片8.png

可以看到一个用 nginx 搭建的下载站

图片9.png

可以设置用来应对并行下载和攻击问题,一般在防火墙进行配置,根据公网的请求数来判断是否为攻击,从而限制下载数量。

重新配置和在线升级而无须中断客户的工作进程:nginx设 立一个子进程,处理在新的配置下的新的访问请求,而在旧配置中的请求,不会中断,而是等旧配置中的请求全结束后,回收旧配置。

相关文章
|
6月前
|
tengine Rust 负载均衡
反向代理学习笔记(一) Nginx与反向代理绪论
反向代理学习笔记(一) Nginx与反向代理绪论
|
6月前
|
Kubernetes 应用服务中间件 nginx
nginx-ingress学习笔记
nginx-ingress学习笔记
135 0
|
前端开发 应用服务中间件 nginx
前端学习笔记202305学习笔记第二十三天-nginx项目部署500情况
前端学习笔记202305学习笔记第二十三天-nginx项目部署500情况
61 0
|
缓存 负载均衡 应用服务中间件
|
负载均衡 前端开发 应用服务中间件
Nginx学习笔记
Nginx学习笔记
|
JavaScript 前端开发 应用服务中间件
前端学习笔记202305学习笔记第二十三天-vue打包nginx部署
前端学习笔记202305学习笔记第二十三天-vue打包nginx部署
82 0
|
应用服务中间件 Linux nginx
nginx基础模块详解
nginx基础模块详解
174 0
nginx基础模块详解
|
监控 网络协议 应用服务中间件
Nginx基础配置
Nginx基础配置
115 0
Nginx基础配置
|
缓存 算法 前端开发
网站流量日志埋点收集—后端脚本(nginx+lua)|学习笔记
快速学习网站流量日志埋点收集—后端脚本(nginx+lua)
581 0
网站流量日志埋点收集—后端脚本(nginx+lua)|学习笔记
|
负载均衡 Java 应用服务中间件
案例开发-搭建 fastDSF 加 Nginx 文件服务器| 学习笔记
快速学习案例开发-搭建 fastDSF 加 Nginx 文件服务器。
案例开发-搭建 fastDSF 加 Nginx 文件服务器| 学习笔记