Nginx 初探

Nginx简介

Nginx(engine X)是一个开源、轻量级、高性能的HTTP和反向代理服务器,可以代理HTTP、 IMAP/POP3/SMTP和TCP/UDP协议;
其特点是占用内存少,并发能力强,采用C语言编写,所以在性能方面有一定保证。
Nginx是一个俄罗斯人伊戈尔·赛索耶夫开发的, 第一个公开版本0.1.0发布于2004年10月;截止到2017年7月11日,最新稳定
版是1.12。
与Nginx同类的Web服务有IIS、 Apache、 Tomcat等。

Nginx特性:

? 模块化设计
? 低内存消耗,高并发
? 事件驱动,AIO
? 高可靠性,master与worker架构
? 支持热更新配置、日志文件滚动、平滑升级
? 丰富的扩展模块

Nginx基本功能

? 静态资源Web服务器
? 基于域名/IP/端口的虚拟主机
? HTTP/HTTPS、 SMTP、 POP3和TCP/UDP反向代理
? 负载均衡
? 页面缓存
? 支持代理FastCGI、 uWSGI等应用服务器
? 支持gzip、 expires
? URL Rewrite
? 路径别名

? 基于IP、用户的访问控制
? 支持访问速率、并发限制
? 等…

Nginx架构

主进程( master process):
1. 主要功能与外界通信和工作进程管理;
2. 读取nginx配置文件并验证有效性;
3. 建立、绑定和关闭socket;
4. 按照配置文件生成、管理和结束工作进程;
5. nginx重启、停止、重载配置文件、平滑升级、管理日志文件等。

工作进程( worker process):
1. 接收客户端请求,将请求交给各个功能模块处理;
2. 系统IO调用,获取响应的数据,发送响应给客户端;
3. 数据缓存管理;
4. 接收主进程指令,比如重启、关闭等。

缓存索引重建及管理进程( cache loader & cache manager) :
cache模块,主要由缓存索引重建( cache loader)和缓存索引管理( cache manager)两个进程完成,缓存索引重
建进程是在进程在nginx服务启动一段时间之后(默认是1分钟)由主进程生成,对本地磁盘的索引文件在内存中建
立元数据库,包括扫描、过期更新等操作,完成后退出。

Nginx与Apache对比

? Nginx轻量级,比Apache占用内存更少,尤其是prefork模型;
? Nginx更抗并发,单机支持10万+QPS, Nginx处理请求是异步非阻塞的,而Aapche是阻塞的;
? Nginx采用多进程工作模式,而Apache有多进程和多进程多线程两种工作模式;
? Nginx高度模块化设计,有很多丰富的模块,更好的扩展性;
? Apache历史悠久(在九几年就已经流行了),稳定性要比Nginx高;
? 采用网络I/O模型不同, Apache采用select, Nginx在Linux2.6+上采用epoll。

网络IO模型

简单来说,网络I/O是用户态和内核态之间的数据交换。
一次网络数据读取操作,大概是这样的:
应用进程通过系统调用( read) ->由用户态转到内核态->内核将请求的数据发送到内核缓冲区->应用进程查看内核
缓冲区是否有数据->如果有则把数据拷贝到用户态->完成I/O操作
? 阻塞
? 非阻塞
? 同步
? 异步
? IO多路复用

时间: 2024-12-20 03:41:53

Nginx 初探的相关文章

Nginx初探

一.什么是Nginx 在nginx官方站点是这样描述它的(nginx.org): NGINX is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server. NGINX is known for its high performance, stability, rich feature set, simple configuration, a

Nginx各个配置块功能详解

Nginx学习笔记-入门篇 nginx初探 ginx服务器是轻量级web服务器中广受好评的一款产品,常用功能有HTTP代理与反向代理(目前已支持七层与四层代理),负载均衡,web缓存. nginx配置文件简介 初学者总是对nginx的配置文件的各个块表示迷惑以及无所适从,接下来简单的介绍一下nginx配置文件的块格式以及含义和生效范围. #这里是全局块,可以配置一些全局生效的配置,比如nginx启动用户,nginx的worke_press events { #event块,配置worker_co

《Nginx高性能Web服务器详解》

第1章 Nginx初探 第2章 Nginx服务器的安装部署 第3章 Nginx服务器架构初探 第4章 Nginx服务器的高级设置 第5章 Nginx服务器的Gzip压缩 第6章 Nginx服务器的Rewrite功能 第7章 Nginx服务器的代理服务 第8章 Nginx服务器的缓存机制 第9章 Nginx服务器的邮件服务 第10章 Nginx源码结构 第11章 Nginx的基本数据结构 第12章 Nginx的启动初始化 第13章 Nginx的时间管理 第14章 Nginx的内存管理 第15章 N

Nginx_学习_00_资源帖

一.精选 1. Nginx中文文档 2. Nginx初探 二.参考资料 1. 原文地址:https://www.cnblogs.com/shirui/p/8423266.html

Nginx之main初探ngx_init_cycle()(上)

Nginx之main初探ngx_init_cycle()(上) 由于ngx_init_cycle()函数非常庞大,这里只给出前400+行的函数调用关系,后400+将在后面的文章中给出. -->ngx_init_cycle(&init_cycle) -->ngx_timezone_update() -->time() -->localtime()注1: -->ngx_timeofday() -->ngx_time_update() -->ngx_gettim

Nginx之main初探

Nginx main函数初探 C程序一般来说都会有主函数,通常意义上主函数定义为main,Nginx也是如此.下面是Nginx中函数一级调用的框架,更详细的级联调用将在以后给出. main() -->ngx_debug_init() -->ngx_strerror_init() -->ngx_get_options -->ngx_time_init() -->ngx_regex_init() -->ngx_ssl_init() -->ngx_save_argv(&

Nginx开发从入门到精通 nginx平台初探

初探nginx架构(100%) 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧. nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程.我们也可以手动地关掉后台模式,让nginx在前台运行,并且通过配置让nginx取消master进程,从而可以使nginx以单进程方式运行.很显然,生产环境下 我们肯定不会这么做,所以关闭后台模式,一般

nginx平台初探(100%)

http://tengine.taobao.org/book/chapter_02.html 初探nginx架构(100%)¶ 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧. nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程.我们也可以手动地关掉后台模式,让nginx在前台运行,并且通过配置让nginx取消master进程,从而

nginx -- nginx平台初探(100%)

初探nginx架构(100%) 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧. nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程.我们也可以手动地关掉后台模式,让nginx在前台运行,并且通过配置让nginx取消master进程,从而可以使nginx以单进程方式运行.很显然,生产环境下我们肯定不会这么做,所以关闭后台模式,一般是