001.Nginx简介
一 Nginx概述
1.1 Nginx简介
Nginx是一个高性能的HTTP和反向代理web服务器,Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其主要特点如下:
- 占有内存少,并发能力强。
- Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接。
- 高度的模块化和自由软件许可证使得第三方模块非常丰富。
- Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上。
1.2 应用场景
基于Nginx的特性,Nginx的应用场景主要有:
http服务器:Nginx是一个http服务可以独立提供http服务,可以做网页静态服务器。
虚拟主机:可以实现在一台服务器虚拟出多个网站。
正反代理:负载均衡或加速,当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用Nginx做反向代理,并且多台服务器可以平均分担负载。
二 Nginx机制
2.1 Nginx进程
nginx在启动后,会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程,工作进程以非特权用户运行。
master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。
worker进程则是处理基本的网络事件。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。
总结其主要功能分别如下:
主进程(master process)的功能:
- 读取Nginx 配置文件并验证其有效性和正确性
- 建立、绑定和关闭socket连接
- 按照配置生成、管理和结束工作进程
- 接受外界指令,比如重启、升级及退出服务器等指令
- 不中断服务,实现平滑升级,重启服务并应用新的配置
- 开启日志文件,获取文件描述符
- 不中断服务,实现平滑升级,升级失败进行回滚处理
- 编译和处理perl脚本
工作进程(woker process)的功能:
- 接受处理客户的请求
- 将请求以此送入各个功能模块进行处理
- IO调用,获取响应数据
- 与后端服务器通信,接收后端服务器的处理结果
- 缓存数据,访问缓存索引,查询和调用缓存数据
- 发送请求结果,响应客户的请求
- 接收主程序指令,比如重启、升级和退出等
2.2 Nginx模型
开发模型:epoll和kqueue。
支持的事件机制:kqueue、epoll、rt signals、/dev/poll 、event ports、select以及poll。
支持的kqueue特性包括EV_CLEAR、EV_DISABLE、NOTE_LOWAT、EV_EOF,可用数据的数量,错误代码.
支持sendfile、sendfile64和sendfilev;文件AIO;DIRECTIO;支持Accept-filters和TCP_DEFER_ACCEP.
三 常见Web服务
3.1 常见Web服务对比
对比项\服务器
|
Apache
|
Nginx
|
Lighttpd
|
Proxy代理
|
非常好
|
非常好
|
一般
|
Rewriter
|
好
|
非常好
|
一般
|
Fcgi
|
不好
|
好
|
非常好
|
热部署
|
不支持
|
支持
|
不支持
|
系统压力
|
很大
|
很小
|
比较小
|
稳定性
|
好
|
非常好
|
不好
|
安全性
|
好
|
一般
|
一般
|
静态文件处理
|
一般
|
非常好
|
好
|
反向代理
|
一般
|
非常好
|
一般
|
最新文章
- Java数据类型和MySql数据类型对应表
- JS识别ios &; 安卓
- java:JDBC详解
- django初始
- Tcpdump命令详解
- WiFi破解
- am,pm时间转换
- android studio ADB not responding.
- Spring之我见
- 隐藏select最右侧的下拉三角图标的css样式
- BZOJ 1078 斜堆
- Ubuntu 14.04安装Chromium浏览器并添加Flash插件Pepper Flas
- .NET Framework(一)
- 伪异步IO理解
- hibernate--ID生成策略--annotation
- 2.Java 加解密技术系列之 MD5
- HighGUI 图形用户界面
- HTML知识点总结之div、section标签
- C# winform三种方法判断文本框textBox内容是否为空
- layoutSubviews总结(转)
热门文章
- android屏幕适配的全攻略--支持不同的屏幕尺寸适配平板和手机
- java 中的自动装箱和拆箱操作
- leetcode1028 从先序遍历还原二叉树 python 100%内存 一次遍历
- ubuntu无法安装vim、tree等解决办法
- Flask项目实战:创建电影网站-创世纪(1)
- dart快速入门教程 (7.2)
- 洛谷P3694 邦邦的大合唱站队【状压dp】
- codeforce 796C - Bank Hacking(无根树+思维)
- 洛谷 P1991 【无线通讯网】
- SecureCRT连接阿里云ECS服务器,经常掉线的解决方案