资讯专栏INFORMATION COLUMN

Nginx 一点一滴 03 - 架构机制

Anleb / 1618人阅读

摘要:服务器架构模块化结构服务器的开发完全遵循模块化设计思想什么是模块化开发单一职责原则,一个模块只负责一个功能将程序分解,自顶向下,逐步求精高内聚,低耦合的模块化结构核心模块最基本最核心的服务,如进程管理权限控制日志记录标准模块服务器的标准功能

Nginx服务器架构 模块化结构

Nginx 服务器的开发完全遵循模块化设计思想

什么是模块化开发?

单一职责原则,一个模块只负责一个功能

将程序分解,自顶向下,逐步求精

高内聚,低耦合

Nginx的模块化结构

核心模块: Nginx最基本最核心的服务,如进程管理、权限控制、日志记录;

标准HTTP模块: Nginx服务器的标准HTTP功能;

可选HTTP模块: 处理特殊的HTTP请求

邮件服务模块: 邮件服务

第三方模块: 作为扩展,完成特殊功能

Nginx的模块清单

核心模块

ngx_core

ngx_errlog

ngx_conf

ngx_events

ngxeventcore

ngx_epll

ngx_regex

标准HTTP模块

ngx_http

ngxhttpcore #配置端口,URI分析,服务器相应错误处理,别名控制(alias)等

ngxhttplog #自定义access日志

ngxhttpupstream #定义一组服务器,可以接受来自proxy, Fastcgi,Memcache的重定向;主要用作负载均衡

ngxhttpstatic

ngxhttpautoindex #自动生成目录列表

ngxhttpindex #处理以/结尾的请求,如果没有找到index页,则看是否开启了random_index;如开启,则用之,否则用autoindex

ngxhttpauthbasic #基于http的身份认证(authbasic)

ngxhttpaccess #基于IP地址的访问控制(deny,allow)

ngxhttplimit_conn #限制来自客户端的连接的响应和处理速率

ngxhttplimit_req #限制来自客户端的请求的响应和处理速率

ngxhttpgeo

ngxhttpmap #创建任意的键值对变量

ngxhttpsplit_clients

ngxhttpreferer #过滤HTTP头中Referer为空的对象

ngxhttprewrite #通过正则表达式重定向请求

ngxhttpproxy

ngxhttpfastcgi #支持fastcgi

ngxhttpuwsgi

ngxhttpscgi

ngxhttpmemcached

ngxhttpempty_gif #从内存创建一个1×1的透明gif图片,可以快速调用

ngxhttpbrowser #解析http请求头部的User-Agent 值

ngxhttpcharset #指定网页编码

ngxhttpupstreamiphash

ngxhttpupstreamleastconn

ngxhttpupstream_keepalive

ngxhttpwrite_filter

ngxhttpheader_filter

ngxhttpchunked_filter

ngxhttprange_header

ngxhttpgzip_filter

ngxhttppostpone_filter

ngxhttpssi_filter

ngxhttpcharset_filter

ngxhttpuserid_filter

ngxhttpheaders_filter #设置http响应头

ngxhttpcopy_filter

ngxhttprangebodyfilter

ngxhttpnotmodifiedfilter

可选HTTP模块

ngxhttpaddition #在响应请求的页面开始或者结尾添加文本信息

ngxhttpdegradation #在低内存的情况下允许服务器返回444或者204错误

ngxhttpperl

ngxhttpflv #支持将Flash多媒体信息按照流文件传输,可以根据客户端指定的开始位置返回Flash

ngxhttpgeoip #支持解析基于GeoIP数据库的客户端请求

ngxgoogleperftools

ngxhttpgzip #gzip压缩请求的响应

ngxhttpgzip_static #搜索并使用预压缩的以.gz为后缀的文件代替一般文件响应客户端请求

ngxhttpimage_filter #支持改变png,jpeg,gif图片的尺寸和旋转方向

ngxhttpmp4 #支持.mp4,.m4v,.m4a等多媒体信息按照流文件传输,常与ngxhttpflv一起使用

ngxhttprandom_index #当收到/结尾的请求时,在指定目录下随机选择一个文件作为index

ngxhttpsecure_link #支持对请求链接的有效性检查

ngxhttpssl #支持https

ngxhttpstub_status

ngxhttpsub_module #使用指定的字符串替换响应中的信息

ngxhttpdav #支持HTTP和WebDAV协议中的PUT/DELETE/MKCOL/COPY/MOVE方法

ngxhttpxslt #将XML响应信息使用XSLT进行转换

邮件服务模块

ngxmailcore

ngxmailpop3

ngxmailimap

ngxmailsmtp

ngxmailauth_http

ngxmailproxy

ngxmailssl

第三方模块

echo-nginx-module #支持在nginx配置文件中使用echo/sleep/time/exec等类Shell命令

memc-nginx-module

rds-json-nginx-module #使nginx支持json数据的处理

lua-nginx-module

Nginx的web请求处理机制

作为服务器软件,必须具备并行处理多个客户端的请求的能力, 工作方式主要以下3种:

多进程(Apache)

优点: 设计和实现简单;子进程独立

缺点: 生成一个子进程要内存复制, 在资源和时间上造成额外开销

多线程(IIS)

优点: 开销小

缺点: 开发者自己要对内存进行管理;线程之间会相互影响

异步方式(Nginx)

经常说道异步非阻塞这个概念, 包含两层含义:

通信模式:

同步: 发送方发送完请求后,等待并接受对方的回应后,再发送下个请求

异步: 发送方发送完请求后,不必等待,直接发送下个请求

Nginx的事件驱动模型

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39207.html

相关文章

  • PHP程序员必备基础

    摘要:版本的特性并行的三次握手四次挥手粘包问题,连接池,攻击通信原理加密算法配置文件逐行理解与配置配置规则错误的排查架构原理的理解的了解配置文件进程数与和内存的关系垃圾回收内存泄漏运行过程协议与的区别注是扩展库版本是版本算法一致性 1,http (1)request reponse (2)code:200 302,304 400 404 403 500 502 504 nginx499 ...

    Coly 评论0 收藏0
  • 使用 caddy 作为微服务的 API gateway

    摘要:它同时也和微服务架构相互促进,并肩前行。为了反向代理的速度,会和后端保持一个连接池。好了,现在我们可以知道,可以很好的胜任微服务架构中的了。我认为并不适合微服务架构,但依然是有个复杂的架构方案的,这个主题改天再说。 背景 大家都知道,Docker这些年让IT界产生了深刻的变革,从开发到测试到运维,处处都有它的身影。它同时也和微服务架构相互促进,并肩前行。 在最新版的 Docker(CE...

    jubincn 评论0 收藏0
  • 使用 caddy 作为微服务的 API gateway

    摘要:它同时也和微服务架构相互促进,并肩前行。为了反向代理的速度,会和后端保持一个连接池。好了,现在我们可以知道,可以很好的胜任微服务架构中的了。我认为并不适合微服务架构,但依然是有个复杂的架构方案的,这个主题改天再说。 背景 大家都知道,Docker这些年让IT界产生了深刻的变革,从开发到测试到运维,处处都有它的身影。它同时也和微服务架构相互促进,并肩前行。 在最新版的 Docker(CE...

    Lemon_95 评论0 收藏0

发表评论

0条评论

Anleb

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<