网站设计制作收费明细,优化生育政策,做网站建设的名声很差吗,怎样做有效的黄页网站华子目录 nginx介绍nginx功能介绍基础特性web服务相关功能nginx进程结构web请求处理机制 nginx进程间通信nginx启动与http连接建立http处理过程 nginx模块介绍nginx命令演示 nginx介绍 nginx是免费的、开源的、高性能的HTTP和反向代理服务器、邮件代理服务器、以及TCP/UDP代理服… 华子目录 nginx介绍nginx功能介绍基础特性web服务相关功能nginx进程结构web请求处理机制 nginx进程间通信nginx启动与http连接建立http处理过程 nginx模块介绍nginx命令演示 nginx介绍 nginx是免费的、开源的、高性能的HTTP和反向代理服务器、邮件代理服务器、以及TCP/UDP代理服务器 nginx官网http://nginx.org nginx的其它二次发行版 Tengine由淘宝网发起的Web服务器项目。它在Nginx的基础上针对大访问量网站的需求添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。从2011年12月开始Tengine成为一个开源项目官网: http://tengine.taobao.org/OpenResty基于Nginx与Lua语言的高性能Web平台 章亦春团队开发官网http://openresty.org/cn/ nginx功能介绍
静态的web资源服务器html图片jscsstxt等静态资源http/https协议的反向代理结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求tcp/udp协议的请求转发反向代理imap4/pop3协议的反向代理
基础特性
模块化设计较好的扩展性高可靠性支持热部署不停机更新配置文件升级版本更换日志文件低内存消耗10000个keep-alive连接模式下的非活动连接仅需2.5M内存event-drivenaiommapsendfile
web服务相关功能
虚拟主机server支持keep-alive和管道连接(利用一个连接做多次请求)访问日志支持基于日志缓冲提高其性能url rewirte路径别名基于IP及用户的访问控制支持速率限制及并发数限制重新配置和在线升级而无需中断客户的工作进程
nginx进程结构
web请求处理机制
多进程方式服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端直到用户关闭连接这样的优势是处理速度快子进程之间相互独立但是如果访问过大会导致服务器资源耗尽而无法提供请求多线程方式与多进程方式类似但是每收到一个客户端请求会有服务进程派生出一个线程和此客户端进行交互一个线程的开销远远小于一个进程因此多线程方式在很大程度减轻了web服务器对系统资源的要求但是多线程也有自己的缺点即当多个线程位于同一个进程内工作的时候可以相互访问同样的内存地址空间所以他们相互影响一旦主进程挂掉则所有子线程都不能工作了IIS服务器使用了多线程的方式需要间隔一段时间就重启一次才能稳定
Nginx是多进程组织模型而且是一个由Master主进程和多个Worker工作进程组成 主进程(master process)的功能
对外接口接收外部的操作信号对内转发根据外部操作的不同通过信号管理Worker监控监控worker进程的运行状态worker进程异常终止后自动重启worker进程读取Nginx配置文件并验证其有效性和正确性建立、绑定和关闭socket连接按照配置生成、管理和结束worker工作进程接受外界指令比如重启、升级及退出服务器等指令不中断服务实现平滑升级重启服务并应用新的配置开启日志文件获取文件描述符不中断服务实现平滑升级升级失败进行回滚处理编译和处理perl脚本
工作进程worker process的功能
所有Worker进程都是平等的实际处理网络请求由Worker进程处理Worker进程数量一般设置为核心数充分利用CPU资源同时避免进程数量过多导致进程竞争CPU资源worker进程数量一般与cpu核心数一一对应增加上下文切换的损耗接受处理客户的请求将请求依次送入各个功能模块进行处理I/O调用获取响应数据与后端服务器通信接收后端服务器的处理结果缓存数据访问缓存索引查询和调用缓存数据发送请求结果响应客户的请求接收主程序指令比如重启、升级和退出等 nginx进程间通信
工作进程是由主进程生成的主进程使用fork()函数在Nginx服务器启动过程中主进程根据配置文件决定启动worker工作进程的数量然后建立一张全局的工作表用于存放当前未退出的所有的workder工作进程主进程生成worker工作进程后会将新生成的worker工作进程加入到worker工作进程表中并建立一个单向的管道并将其传递给worker工作进程该管道与普通的管道不同它是由主进程指向工作进程的单向通道包含了主进程向工作进程发出的指令、工作进程ID、工作进程在工作进程表中的索引和必要的文件描述符等信息主进程与外界通过信号机制进行通信当接收到需要处理的信号时它通过管道向相关的工作进程发送正确的指令每个工作进程都有能力捕获管道中的可读事件当管道中有可读事件的时候工作进程就会从管道中读取并解析指令然后采取相应的执行动作这样就完成了主进程与工作进程的交互 worker进程之间的通信原理基本上和主进程与worker进程之间的通信是一样的只要worker进程之间能够取得彼此的信息建立管道即可通信但是由于worker进程之间是完全隔离的因此一个进程想要知道另外一个进程的状态信息就只能通过主进程来实现为了实现worker进程之间的交互master进程在生成worker进程之后在worker进程表中进行遍历将该新进程的PID以及针对该进程建立的管道句柄传递给worker进程中的其他进程为worker进程之间的通信做准备当worker进程1向worker进程2发送指令的时候首先在master进程给它的其他worker进程工作信息中找到2的进程PID然后将正确的指令写入指向进程2的管道worker进程2捕获到管道中的事件后解析指令并进行相关操作这样就完成了worker进程之间的通信另外worker进程可以通过共享内存来通讯比如upstream中的zone或者limit_req、limit_conn中的zone等。操作系统提供了共享内存机制 nginx启动与http连接建立 Nginx启动时Master进程加载配置文件Master进程初始化监听的socketMaster进程fork出多个Worker进程Worker进程竞争新的连接获胜方通过三次握手建立Socket连接并处理请求
http处理过程 nginx模块介绍
nginx有多种模块
核心模块是Nginx服务器正常运行必不可少的模块提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能标准HTTP模块提供HTTP协议解析相关的功能比如 端口配置 、 网页编码设置 、 HTTP响应头设置等等可选HTTP模块主要用于扩展标准的HTTP功能让Nginx能处理一些特殊的服务比如Flash多媒体传输 、解析GeoIP请求、网络传输压缩、安全协议SSL支持等邮件服务模块主要用于支持Nginx的邮件服务包括对POP3协议、IMAP协议和SMTP协议的支持Stream服务模块实现反向代理功能包括TCP协议代理第三方模块是为了扩展Nginx服务器应用完成开发者自定义功能比如Json支持、Lua支持等
模块分类
核心模块core module
标准模块
HTTP模块 ngx_http_*
Mail模块: ngx_mail_*
Stream模块ngx_stream_*
第三方模块nginx命令演示
#-v只会列出nginx的版本
[rootnginx-node1 ~]# nginx -v
nginx version: nginx/1.24.0#-V会列出编译时用到的模块和nginx版本
[rootnginx-node1 ~]# nginx -V
nginx version: nginx/1.24.0
built by gcc 11.3.1 20220421 (Red Hat 11.3.1-2) (GCC)
built with OpenSSL 3.0.1 14 Dec 2021
TLS SNI support enabled
configure arguments: --prefix/usr/local/nginx --usernginx --groupnginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module#-t检查nginx主配置是否正确
[rootnginx-node1 ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful