Nginx(一):Nginx介绍

关于Nginx:

Nginx主要的2个用途是静态页面web服务器和7层反向代理web服务器(常见的协议都可以做反向代理),而且它本身还具有很大的缓存功能,但是一般缓存文件元数据(描述符)或者文件数据,但是缓存能力有限,如果要发挥其缓存能力就需要用第三方扩展。

其实真正实现缓存功能是varnish、squid(轻量级的,很多用于CDN服务器)。Varnish是专业级的缓存工具,但任何缓存工具本身都是反向代理,所以它本身也是一个web的反向代理服务,不过它的反向代理功能就差很多。

在web反向代理领域尤其是负载均衡方面有一个强大的对手就是HAproxy,从名字上看是HA,但是它本身实现的并不是一种高可用服务,它提供的是基于应用层和TCP的反向代理,它可以应用在MySQL和HTTP等做负载均衡。

在中大型站点中可能会用到MogileFS,它用作图片存储,是一种分布式文件系统。

Apache功能也很多,但是它诞生到现在太久了,所以它是一个重量级的WEB服务器,它不支持高并发,但是它以稳定为主。在MPM中早先流行的是prefork,它的模式是一个进程响应一个用户请求,如果一个进程需要1M内存,那如果1万呢,要多少内存?太消耗资源,这也就是后来Apache引入了event机制。面对Apache的现状也就是出现了c10k的问题,就是1万连接。还有人专门讨论过,所以就出现了轻量级的WEB服务器,能够突破10K。

基本功能:

静态资源的WEB服务器,另外还可以自动缓存打开的文件描述符(如果文件被用户访问过它就会直接缓存在内存中)

反向代理服务器,缓存、负载均衡

支持Fastcgi协议,可以和PHP的FPM协议工作。

Nginx是模块化的,从1.9.1开始支持动态装载。支持ZIP过滤去,SSI和图像大小调整。不过Tengine可以使用DSO。

基于名称和IP做虚拟主机、支持长连接、支持平滑升级、URL地址重写、支持速率和并发限制等。

基本结构:

Nginx的结构和Apache类似,有一个Master进程和多个work进程(也可称作线程,原因看说明1)。至于有多少可以自己调整,一个work进程可以相应多个用户请求,所以不是一对一的。理论来说一个work进程就够了,但是到底要启动多少个work进程,这取决于你的CPU物理核心数。work进程数量小于物理核心数量。也就是尽量避免进程切换,同时也要给操作系统留一个物理核心。极具性能的做法是,留出1个物理核心给操作系统,这个可以指定。其余的都分配给Nginx的work进程。对于操作系统来说一个物理核心就是一个CPU。比如2个物理CPU,每个是6核心,同时启动超线程,那么在系统上看到的就是24核心,也就是24个CPU。

一般会这样做,就是明确指定操作系统使用一个物理核心,然后手动的把其他核心的都绑定到Nginx的work进程上去。这就是Nginx优化之一。这么做就是为了避免切换次数。

如果Nginx作为反向代理的话,还会启动其他进程,比如管理缓存的。

Nginx是基于事件驱动机制,包括kqueue、epoll,/dev/poll;另外它还支持消息通知也就非事件驱动的select、poll等,不过这些也不是真正意义的通知。

支持sendfile,sendfile可以提高效率

用户访问网页的基本过程(不包含缓存功能):

  1. 一个请求发到内核(通过socket套接字,到网卡,然后会被Linux的防火墙接收,如果请求的对象是自己,它会判断是不是本地进程的端口,如果是就直接提交到用户空间的相应进程,否则就丢弃)
  2. 内核交给用户空间的服务进程,服务进程发现用户请求的是一个页面文件,然后服务进程发起系统调用
  3. 内核通过磁盘IO获取响应内容
  4. 内核获取了数据之后交给服务进程
  5. 然后服务进程封装成响应报文,然后再送进内核
  6. 由内核向外响应
时间: 2024-10-12 01:49:36

Nginx(一):Nginx介绍的相关文章

nginx web日志介绍和分析

nginx web日志介绍和分析 Nginx访问日志打印的格式可以自定义,例如Nginx日志打印格式配置如下,Log_format 用来设置日志格式,Name(模块名) Type(日志类型),可以配置多个日志模块,分别供不同的虚拟主机日志记录所调用: log_format log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                   '$status $body_b

LNMP架构应用实战——Nginx服务配置文件介绍

LNMP架构应用实战--Nginx服务配置文件介绍 nginx的配置文件比较简单,但功能相当强大,可以自由灵活的进行相关配置,因此,还是了解下其配置文件的一此信息 1.Nginx服务目录结构介绍 安装完成后,在安装路径下就会有Nginx目录信息 [[email protected] application]# tree nginx nginx +-- client_body_temp +-- conf          #nginx服务配置文件目录 |   +-- fastcgi.conf  

Nginx的一些介绍

Apache服务器:http://httpd.apache.org,世界上用的最多的服务器,开放源代码,支持跨平台,可移植性,模块支持丰富,虽速度和性能及内存消耗不及其他轻量级Web服务器,但是属于重量级产品. Lighttpd服务器:http://www.lighttpd.net,德国人写的开源软件,内存开销低,CPU占用率低,效能好,模块丰富,与Nginx同属轻量级Web服务器,是Nginx竞争对手之一. IBM WebSphere服务器:http://www.ibm.com/develop

Nginx之基本介绍(一)

这是一篇介绍Nginx基本信息和配置文件详情的文章,适合入门者,如果你想深入了解Nginx请绕道 什么是Nginx? Nginx是轻量级,高性能,跨平台的web服务器 Nginx的特点 更快 单个请求的响应速度更快 在高并发时,Nginx比其他的web服务器具有更快的响应速度 高扩展性 Nginx是由不同具有低耦合模块组成的,这使得他具备支持大量第三方模块的特点 高可靠性(健壮性) 依赖于其和新框架代码的优秀设计和模块设计的简单性:当一个worker进程出错时,master管理进程会快速的拉起新

一、Nginx的基础介绍

nginx简介 1.常用来提供静态Web服务的软件有如下三种: Apache:  这是中小型Web服务的主流,Web服务器中的老大哥. Nginx:    大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大. Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飞速发展. Lighttpd: 这是一个不温不火的优秀Web软件,社区不活跃,静态解析效率很高. 在Nginx流行前,它是大并发静态业务的首选,国内百度贴吧.豆瓣等众多网站都有Lig

Nginx常用命令介绍

Nginx常用命令 Nginx PID位置 /var/run/nginx.pid Nginx关闭 Nginx支持以下几种信号控制: - TERM, INT 快速关闭 - QUIT 从容关闭 - HUP 平滑重启 - USR1 重新打开日志文件,在切割文件时用处大 - USR2 平滑升级 - WINCH 从容关闭工作进程 #从容停止Nginx ? kill -QUIT master进程号 ? #快速停止Nginx ? kill -TERM master进程号 ? #强制停止Nginx ? kill

nginx + iis 使用介绍

1.下载 nginx 2.配置nginx 文件 1)配置该目录下E:\nginx\nginx-1.9.3\conf: #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http {

linux的Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl介绍

Nginx的负载均衡 1. 查找www.qq.com域名对应IP做测试 [[email protected] ~]# yum install -y bind-utils //安装dig命令包 [[email protected] ~]# dig www.qq.com ; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.1 <<>> www.qq.com ;; global options: +cmd ;; Got answer: ;

nginx配置文件nginx.conf详细介绍

tree /application/nginx/              #nginx整个安装结构 /application/nginx/conf/nginx.conf解释: 全局配置 #user nobody:                         #运行用户 Worker_processes 1 ;               #工作进程数量 #error_log  log/error.log           #错误日志文件的位置 #pid     log/nginx.pid

深刻理解Nginx之Nginx与Python(1)

6 Python和Nginx 6.1 介绍FastCGI FastCGI(Fast Common Gateway Interface)是基于CGI上的改进,是CGI的一种演变产物.尽管目的是保持相同的,FastCGI在CGI上提供了重大的提升,通过建立起下面的原则. l  代替对于每个请求孵化一个新进程,FastCGI采用持久化进程,伴随着能够处理多个请求的能力. l  Web服务器和网关应用程序通过使用sockets比如TCP或者POSIXT 本地IPC sockets来交流.其结果是,它们的