<1>Nginx简介及安装

本文深入探讨了Nginx作为高性能Web服务器的优势,包括高并发连接、低内存消耗、成本低廉等特性,并提供了Ubuntu下Nginx的安装教程。同时介绍了Nginx的启动、停止、平滑重启方法以及信号控制机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]一、Nginx简介[/b]
1.1 常用的web服务器简介
Web服务器也称为www服务器,http服务器,其主要功能时提供网上信息浏览服务。Unix和Linux平台下的常用web服务器有Apache, Nginx(读作'engine x'), Lighttpd, Tomcat, IBMSphere等,其中应用最广泛的是Apache。 而Windows NT/2000/2003平台下最常用的服务器则是微软的IIS(Internet Information Server)。

下图是截止2014年5月世界各地web服务器市场占有率统计图:
[img]http://dl2.iteye.com/upload/attachment/0103/4164/34efe2af-3a7c-3efd-a78f-19bcbefd6ab0.jpg[/img]
在所有网站使用的Web服务器中,Apache的占有率是60.5%。在前100万家网站使用的Web服务器中,Apache的占有率是56.5%。在前1万家网站使用的Web服务器中,Apache的占有率是39.1%,低于Nginx的39.3%的占有率。

[b]1.1.1 Apache 服务器[/b]
Apache 仍然是世界上用得最多的 Web 服务器,市场占有率达 60%左右。它源于 NCSAhttpd 服务器,在 NCSA WWW 服务器项目停止后,那些使用 NCSA www 服务器的人们开始交换用于此服务器的补丁,这也是 Apache 名称的由来 (pache补丁)。世界上很多著名的网站都是Apache 的用户,它的优势主要在于源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行 在几乎所有的 Unix 、Windows 、Linux 系统平台上) ,以及其可移植性等。Apache 的模块支持非常丰富,虽在速度、性能上不及其他[b]轻量级[/b] Web 服务器,他是属于[b]重量级[/b]产品,所消耗的内存 也比其他 Web 服务器要高。

[b]1.1.2 Tomcat服务器[/b]
Tomcat 是一个开放源代码、运行 servlet 和 JSPWeb 应用软件的基于 Java 的 Web 应用软件容 器。 Tomcat Server 是根据 servlet 和 JSP 规范执行的,因此也可以说 Tomcat Server 实行了 Apache-J akarta 规范,且比绝大多数商业应用软件服务器要好。但是, [b]Tomcat 对静态文件、高并发的处理比较弱[/b]。

[b]1.2 Nginx 的发展[/b]
Nginx ( 读 "engine x" )是俄罗斯人 Igor Sysoev (伊戈尔•塞索耶夫)编写的一款高性能的[color=red]HTTP和反向代理服务器[/color]。 Nginx选择高效的 epoll ( Linux 2.6 内核)、 kqueue (FreeBSD) 、 eventport (Solaris 10) 作为网络 I/O 模型,在高连接并发的情况下. Nginx 是 Apache 服务器不错的替代品,它能够支持高达到 50,000 个并发连接数的响应,而内存、 CPU 等系统资源消耗却非常低,运行非常稳定。

[b]1.3选择Nginx的理由[/b]
[color=red][b]1.3.1 他可以高并发连接[/b][/color]
官方测试Nginx能够支撑5万并发连接,在实际生产环境中可支撑2-4万并发连接数。这得益于使用了最新的epoll和kqueue网络IO模型,而Apache使用的则是传统的select模型,其比较稳定的Prefork模式为多进程模式,需要经常派生子进程,所消耗的cpu等服务器资源要逼Nginx高得多。

[color=red][b]1.3.2 内存消耗少[/b][/color]
Nginx+PHP(FastCGI)服务器在3万并发连接下,开启的10个Nginx进程消耗150MB内存(15MB*10),开启的64个php-cgi进程消耗1280MB内存(20MB*64),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500MB.
同等硬件环境下,Nginx的处理能力相当于Apache的[b]5-10[/b]倍。

[color=red][b]1.3.3 成本低廉[/b][/color]
购买F5 BIG-IP 、NetScal町等硬件负载均衡交换机需要十多万甚至几十万人民币。而Nginx为开源软件,采用的是 2-clause BSD-like 协议,可以免费使用,并且可用于商业用途。

[b]1.3.4 其他理由[/b]
[color=red][b]1)配置文件非常简单[/b][/color]
网络跟程序一样通俗易懂,即使非专业系统管理员也能看懂。

[color=red][b]2)支持 Rewrite 重写规则[/b][/color]
能够根据域名、 URL 的不同,将 HTIP 请求分到不同的后端服务器群组。
内置的健康检查功能.如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。

[color=red][b]3)节省带宽[/b][/color]
支持 GZIP 压缩,可以添加浏览器本地缓存的Header头。

[color=red][b]4)稳定性高[/b][/color]
用于反向代理,宕机的概率微乎其微。

[color=red][b]5)支持热部署[/b][/color]
Nginx 支持热部署。它的启动特别容易,并且几乎可以 7天 *24 小时不间断地运行,即使运 行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行升级。

[b]2. 安装[/b]
Ubuntu下Nginx的安装可以参考(在线安装已验证):[url]http://www.cnblogs.com/languoliang/archive/2013/04/01/nginx.html[/url]
其他操作系统下的安装也都很容易,很方便可以找到安装指南。

[b]2.1 Nginx的启动、停止、平滑重启[/b]
在linux下安装好之后,Nginx服务主要的操作就是[b]启动、停止和平滑重启[/b]。

[b]2.1.1 Nginx的启动[/b]
启动Nginx,可以执行以下命令。假设Nginx安装在/usr/local/nginx目录中,那么启动Nginx的命令就是:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf


参数“-c”指定了配置文件的路径,如果不加此参数,Nginx会[color=red]默认加载[/color]其安装目录的conf子目录中的nginx.conf文件。在本例中即:/usr/local/nginx/sbin/nginx/conf/nginx.conf。

[b]2.1.2 Nginx的停止[/b]
Nginx的停止方法有很多种,一般通过发送系统信号给Nginx主进程的方式来停止Nginx.
我们可以通过ps命令来查找Nginx的主进程号:
ps –ef| grep nginx

会输出:
[img]http://dl2.iteye.com/upload/attachment/0103/4200/1dd5e4b8-92d0-335e-9cb2-d55b38ea7ea9.jpg[/img]
从上图可以看到,1个Nginx进程的备注信息为“[color=darkred][b]master process[/b][/color]”,表示它为[b]主进程[/b],另外的4个备注信息为“[b]worker process[/b]”,表示他们为子进程。1021为主进程号。

如果在[color=red]nginx.conf[/color]配置文件中指定了[b]pid文件[/b]存放的路径(例如: pid /usr/local/webserver/nginx/logs/nginx.pid;),该文件中存放的就是Nginx当前的主进程号。如果没有指定pid文件存放的路径,nginx.pid文件默认存放在Nginx安装目录的logs目录下。所以,我们可以直接通过以下命令来完成停止,省下寻找Nginx主进程号的步骤:

Kill –信号类型 `/usr/local/webserver/nginx/logs/nginx.pid`

[b](1) 从容停止Nginx[/b]
kill –QUIT Nginx主进程号

kill –QUIT `/usr/local/webserver/nginx/logs/nginx.pid`


[b](2)快速停止Nginx[/b]
kill -TERM Nginx主进程号
kill -TERM `/usr/local/webserver/nginx/logs/nginx.pid`

kill -INT Nginx主进程号
kill -INT `/usr/local/webserver/nginx/logs/nginx.pid`

[b](3)强制停止所有Nginx进程[/b]
kill -9 nginx

[b]2.2 Nginx的平滑重启[/b]
如果改变了 Nginx 的配置文件 (nginx.conf),想重启 Nginx. 同样可以通过发送系统信号给Nginx 主进程的方式来进行。不过,重启之前,要确认 Nginx 配置文件( nginx.conf)的语法是正确的,否则 Nginx 将不会加载新的配置文件。[color=red]通过以下命令可以判断 Nginx 配置文件是否正确[/color]:
/usr/local/webserver/nginx/sbin/nginx -t -c /usr/local/webserver/nginx/conf/ nginx.conf

如果配置文件不正确,屏幕将会提示配置文件的第几行出错:
[emerg]: unknown directive "abc" in /usr/local/webserver/ngin x/conf/nginx.conf:55 configuration file /usr/local/webserver/ngin x/conf/nginx.conf test failed

如果配置文件正确,屏幕将提示以下两行信息:
the configuration file /usr/local/webserver/ngin x/conf/nginx.conf syntax is ok
configuration file /usr/local/webserver/ngin x/conf/nginx.conf test is successful
这时候,就可以平滑重启 Nginx了,使用命令:
kill  -HUP Nginx主进程号


kill -HUP `cat /usr/local/webserver/nginx/logs/nginx.pid`
当 Nginx 接收到 HUP 信号时,它会尝试先解析配置文件(如果指定配置文件,就使用指定的,否则使用默认的) .如果成功,就应用新的配置文件(例如,重新打开日志文件或监昕的套接字)。之后, Nginx运行新的工作进程并从容关闭旧的工作进程。通知工作进程关闭监听套接字,但是继续为当前连接的客户提供服务。所有客户端的服务完成后,旧的工作进程被关闭。如果新的配置文件应用失败, Nginx将继续使用旧的配置进行工作。

[b]2.3 Nginx的信号控制[/b]
在上一节中,我们使用了信号来控制 Nginx 停止、平滑重启, Nginx支持以下几种信号:

•TERM,INT 快速关闭:

• QUIT 从容关闭:

• HUP 平滑重启,重新加载配置文件:

• USRl 重新打开日志文件,在切割日志时用途较大;

• USR2 平滑升级可执行程序:

• WINCH 从容关闭工作进程。


[b]参考资料:[/b]
《实战Nginx 取代apache的高性能web服务器》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值