认识nginx


1.Nginx是什么?

Nginx是一个高性能的HTTP Server和代理服务器软件。因为其高并发、占用资源少、及具备丰富功能等级特性而闻名。

Nginx软件可以运行在UNIX,GNU/Linux,BSD,Mac OSX,Solaris,以及Microsoft Windows等级操作系统中。随着Nginx在很多大型网站的稳定高效运行,nginx近年来逐渐被越来越多的大中小型网站站所使用。

Nginx软件在世界上使用的排名:

Web server排行

根据上图,我们可以看出,到目前为止,Nginx已经成为世界上使用数量排名第二的Web服务软件,市场占有率达30.4%,并呈持续逐渐递增的趋势,有可能取代Apache的位置。

上述图来源:

https://w3techs.com/technologies/overview/web_server/all

2.Nginx的特点及应用场合

 Nginx特点:

Nginx是一个高性能的Web和反向代理服务器软件,它具有很多优越的特性,作为Web服务器,和Apache相比,Nginx能够支持更多的并发连接,而占用的资源却更少,效率很高。

作为负载均衡服务器,Nginx可以作为HttpServer或DB等服务的代理服务器。

Nginx同时也是一个优秀的邮件代理服务软件,还可以作为缓存服务器使用,相当于专业的缓存软件,如squid。

Nginx的安装简单,配置文件简洁、配置灵活。

目前国内部分门户网站已经开始或已经在使用Nginx,如网易、新浪、赶集、人人等。近年来,Nginx在国内互闻网领域日趋火热,越来越多的网站开始使用Nginx。

Nginx优点总结:

ü      高并发:能支持1-2万甚至更多的并发连接。

ü      内存消耗少:在3万并发连接下,开启的10个Nginx进程消耗不到200M内存。

ü      可以做HTTP反向代理,即负载均衡功能,相当于专业的Haproxy软件或LVS的功能。

ü      内置对RS服务器健康检查功能:如果Nginx Proxy后端某台Web服务器宕机,不会影响前端的访问,这个功能还比较弱,需要后续改进。

ü      通过cach插件可以实现类squid等专业的缓存软件实现的功能。

Nginx的主要应用场合

ü      使用Nginx结合FastCG运行PHP、JSP、Perl等程序。

ü      使用Nginx作反向代理、负载均衡、规则过滤。

ü      使用Nginx运行静态HTML页、小图片等。

ü      使用Nginx加cache插件实现对web服务器缓存功能。

提示:近年,网上热抄Nginx webserver,经过作者测试,对于提供静态小文件html页、图片等服务,Apache确实要比Nginx逊色一些,但在结合PHP引擎提供php服务及其它很多方面并不比Nginx差,而apahce的稳定性相对要好些。建议读者在选择时,根据具体的业务需求来选择,不要盲从。

Nginx和其他Web服务器的对比

主流web服务产品对比说明

Apache:

ü      2.2版本非常稳定强大,据官方说明,其2.4版本性能超强。

ü      Prefork模式取消了进程创建开销,性有很高。

ü      处理动态业务数据时,因关联到后端的引擎和数据库,瓶颈不在于apache本身。

ü      高并发时消耗系统资源相对比较多一些。

Nginx:

ü      基于异步IO模型,性能强,能够支持上万并发。

ü      对小文件支持很好,性能很高。

ü      代码优美,扩展库必须编译进主程序。

ü      消耗系统资源比较低。

Web服务产品性能对比测试

静态数据性能对比:

处理静态小文件,nginx比apache更有优势。

动态数据性能对比:

当处理动态数据时,两者差距不太大,apache更有优势一点。这是因为处理动态数据的能力取决于php和后端数据库的提供服务能力。也就是瓶颈不在web服务器上。一般PHP支持的并发参考值300-1000,java引擎并发300-1000。

为什么Nginx的总体性能比Apache高?

Nginx使用最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。

处理大量连接的读写,Apache所采用的select网络I/O模型比较低效。

如何正确选择web服务器?

虽然国内很多人都在使用Nginx,但是apahce这个web server,同样非常强大实用,尤其是apache仍旧是最广泛使用的web服务器,且阿里集团,百度等大公司仍在使用apache,而且apache到目前为止仍是世界上最广泛应用的web servber。在实际工作中,我们要根据业和需求来选择适合的业务服务器,在满足需求的前提下,可以选择自己最擅长的软件,然后掌握了新的好的软件后,在逐步替换,切记不要盲从选择使用,最终导致自己无法控制的恶果。

静态业务:采用nginx

动态业务:采用nginx和apache均可

动态业务可以由前端代理,根据页面元素的类型,向后转发相应的且务器进行处理。

如果并发不是很大,又对apache很熟悉,采用apache也是可以的,apache2.4版本也很强大,并发连接也有所增加,见后央的压力测试。

时间: 2024-12-26 18:11:30

认识nginx的相关文章

linux下Nginx配置文件(nginx.conf)配置设置详解(windows用phpstudy集成)

linux备份nginx.conf文件举例: cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf-20171111(日期) 在进程列表里 面找master进程,它的编号就是主进程号. ps -ef | grep nginx 查看进程 cat /usr/local/nginx/nginx.pid 每次修改完nginx文件都要重新加载配置文件linux命令: /usr/local/nginx -t //验证配置文件是否合法 若ngin

shell 格式化输出nginx的编译参数

命令 nginx -V > nginx.txt cat -n nginx.txt  | sed -n '5,18p' | awk '{$1="";print $0}'  | sed 's/^[ ]*//g'  | tr '\n' ',' | sed -n 's/,//gp' | tr " " "\n" 结果 configure arguments: --user=nginx --group=nginx --prefix=/usr/share

Nginx 反代参数:$X-Real-Ip和$X-Forwarded-For的区别

## \$X-Real-Ip和$X-Forwarded-For的区别 标签(空格分隔): nignx 负载均衡 client-ip --- ####1.如果只有一层代理,这两个头的值就是一样的####2.多层代理> * X-Forwarded-For:  header包含这样一行        `*X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3*`> * X-Real-Ip:没有相关标准,上面的例子,如果配置了X-Read-IP,可能会有两种情况`// 最

Nginx为什么比Apache Httpd高效:原理篇

一.进程.线程? 进程是具有一定独立功能的,在计算机中已经运行的程序的实体.在早期系统中(如linux 2.4以前),进程是基本运作单位,在支持线程的系统中(如windows,linux2.6)中,线程才是基本的运作单位,而进程只是线程的容器.程序 本身只是指令.数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例.若干进程有可能与同一个程序相关系,且每个进程皆可以同步(循 序)或异步(平行)的方式独立运行.现代计算机系统可在同一段时间内以进程的形式将多个程序加载到存储器中,并借

linux 安装与启动nginx

linux系统为Centos 64位 一.去http://nginx.org/download/上下载相应的版本下载nginx-1.8.0.tar.gz(注:还有更高版本的). 二.解压 tar -zxvf nginx-1.8.0.tar.gz 三.进入nginx-1.8.0/文件夹,设置一下配置信息 ./configure --prefix=/usr/local/nginx(安装后的文件存放路径). 四.配置的时候可能会出现类似这样的信息 ./configure: error: the HTT

linux运维、架构之路-Nginx提高

一.虚拟主机搭建 1.基于域名的虚拟主机 [[email protected] html]# cat nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name

linux自学笔记--nginx基本配置

1.基本配置 worker_processes auto|3; 指定使用的核数,默认auto,也可指定  一般为自身核数-1,可用lscpu查看 events { worker_connections 1024; 最大并发连接数,最大并发响应  数 worker_processes * worker_connections } http { keepalived_timeout 65 0表示禁止长连接 keepalived_request 长连接最大资源数,默认100 keepalived_di

nginx配置文件详解

nginx配置文件nginx.conf超详细讲解 #nginx进程,一般设置为和cpu核数一样worker_processes 4;                        #错误日志存放目录 error_log  /data1/logs/error.log  crit;  #运行用户,默认即是nginx,可不设置user nginx       #进程pid存放位置pid        /application/nginx/nginx.pid; #Specifies the value

Saltstack批量编译部署nginx(多模块)

最近一直在研究saltstack的同步文件和批量执行命令,随着架构的变大,批量部署的需求也变得明显起来了,我需要用一条命令就部署好nginx和tomcat,并且符合我所有的环境需求,可以直接投入生产环境使用,这就需要用到saltstack的批量安装部署功能了.这篇文章主要介绍nginx的批量部署,下篇讲解tomcat多实例的批量部署方法. 环境介绍: Centos 6.5 salt 2015.5.10 nginx 1.12.0 minion:test 1.修改master配置文件,修改后重启服务

FastDFS+Nginx问题及修复

FastDFS+nginx问题及修复:     1.[error] 30000#0: *1 open() "/usr/local/nginx/html/group1/M00/00 /00/wKgAA1cLh12AI0kfAAAADzbdjmQ50_big.html           "failed (2: No such file or directory), client: 192.168.0.181, server:localhost, request:            &