Linux企业实战-----nginx简介+源码编译安装

什么是nginx

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
Nginx相较于Apache\lighttpd具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于Epoll的高效事件模型kqueue.

Nginx VS Apache

Apache和Nginx最核心的区别在于 apache 是同步多进程模型,一个连接对应一个进程;而 nginx 是异步的,多个连接(万级别)可以对应一个进程。

Apache

● apache 的 rewrite 比 nginx 强大,在 rewrite 频繁的情况下,用 apache

● apache 发展到现在,模块超多,基本想到的都可以找到

● apache 更为成熟,少 bug ,nginx 的 bug 相对较多

● apache 超稳定

● apache 对 PHP 支持比较简单,nginx 需要配合其他后端用

● apache 在处理动态请求有优势,nginx 在这方面是鸡肋,一般动态请求要 apache 去做,nginx 适合静态和反向。

● apache 仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区

Nginx

● 轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源

● 抗并发,nginx 以 epoll and kqueue 作为开发模型,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 ,而 apache 在 PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。

● nginx 处理静态文件好,静态处理性能比 apache 高三倍以上

● nginx 的设计高度模块化,编写模块相对简单

● nginx 配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂 ,重启的时候发现配置出错了,会很崩溃

● nginx 作为负载均衡服务器,支持 7 层负载均衡

● nginx 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器

● 启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级

● 社区活跃,各种高性能模块出品迅速

总结

一般来说,需要性能的 web 服务,用 nginx 。如果不需要性能只求稳定,更考虑 apache 。更为通用的方案是,前端 nginx 抗并发,后端 apache 集群,配合起来会更好。
Nginx优势

1、作为Web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高

2、作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度

3、作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡

4、在性能方面,Nginx是专门为性能优化而开发的,实现上非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对5万个并发连接数的响应,而且只占用很低的内存资源

5、在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持1万个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的

6、在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7x24小时不间断地运行
 Nginx具有很高的稳定性;支持热部署;代码质量非常高,代码很规范,手法成熟,模块扩展也很容易;采用了一些os提供的最新特性如对sendfile(Linux2.2+),accept-filter(FreeBSD4.1+),TCP_DEFER_ACCEPT(Linux 2.4+)的支持,从而大大提高了性能。

Nginx多进程模式

nginx在启动后,会有一个master进程和多个worker进程。master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。而基本的网络事件,则是放在worker进程中来处理了。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致。

Nginx的事件处理机制

nginx采用异步非阻塞事件处理机制

同步和异步、阻塞与非阻塞:
1、同步与异步:主要是针对应用程序与内核的交互方式而言的:
同步:进程发出数据后,等内核返回响应以后才继续下一个请求,即如果内核一直不返回数据,那么进程就一直等,直到天荒地老,死机error。
异步:进程发出数据后,不等内核返回响应,接着处理下一个请求,Nginx是异步的

2.阻塞与非阻塞
可以理解为内核与IO设备的交互方式,当内核收到进程请求IO数据时候的处理方式
也可以简单理解为内核需要做一件事能不能立即得到返回应答,如果不能立即获得返回,需要等待,那就阻塞了,否则就可以理解为非阻塞
阻塞:IO调用不能立即返回结果,即一个进程发起的IO请求不能得到立即满足时,进程就要一直等到内核响应,内核要把数据从IO设备复制到内核空间,再返回给进程,这是阻塞。
非阻塞:IO调用可以立即返回结果,一个进程发起的IO进程不能立即满足时,不在等待,而是一遍一遍的轮训查看IO是否完成

Nginx源码编译

home:
firefox http://nginx.org/en/download.html  下载nginx1.19.1
cd /root/Download
scp nginx-1.19.1.tar.gz server2:/root

server2:
pcs cluster stop --all
pcs cluster disable --now
cd /root
tar zxf nginx-1.19.1.tar.gz 
ls
cd nginx-1.19.1/
yum install gcc -y               安装依赖项
yum install pcre-devel
yum install -y openssl-devel
./configure --prefix=/usr/local/nginx --with-http_ssl_module 
make
make install
cd /usr/local/nginx/
ls
cd sbin/
ls
./nginx -v
./nginx -t
./nginx 
netstat -antlp|grep :80

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42958401/article/details/109309478