nginx和Apache的区别

uwsgi wsgi nginx的区别和关系:

简单来说uwsgi是一个符合wsgi协议的服务器,可以搭配任意的框架,只要框架也满足wsgi协议。

而nginx相当于管家,实现分布式服务器,应对大量客户的请求,作用为反向代理服务器。

WSGI:PythonWeb服务器网关接口(Python Web Server Gateway Interface),这是一种协议规范,用于规范web server(比如uWSGI)和web application(Flask、Django等)之间的通信方式。这种协议其实是将我们和更加底层的HTTP、TCP等协议分隔开来,使我们在开发的时候可以不用自己去实现这些协议的处理,只关注于更高层次的逻辑处理,实现面向对象的编程。

uWSGI:uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。它本身可以作为一个服务器单独使用,但是也可以和nginx组合使用。一般Django部署都是用的nginx+uWSGI,可以理解为这种组合性能更优。

nginx:这是一个高性能的web服务器/反向代理,类似Apache。什么叫反向代理,客户端通过一个代理去访问服务器,这样的代理叫正向代理;同样的服务器前加一个代理和客户端通信,这样的代理叫反向代理。nginx就是用来放在uWSGI前做反向代理。我们在本地开发的时候没有安装过以上服务器,但是也可以python manage.py runserver运行项目,那是因为Django等框架自带了WSGI服务器,性能不强,可以用于调试。

一、Nginx特点

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

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

3、服务器并发指的是多个用户同时访问数据库中的同一字段的行为。这样的用户行为对于服务器的性能是一种考验。我们经常能遇到由于并发用户过多而导致的系统缓慢甚至瘫痪现象。比方说,很多使用过那些在线考试报名系统的朋友都会发现,半夜登录系统报名比白天登录系统报名要容,网页反应速度也要快一些,这就是由于晚上的并发用户数比较小的原因。

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

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

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

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

8、负载均衡分为四层和七层,四层模式下这些SYN攻击都会被转发到后端的服务器上;而七层模式下这些SYN攻击自然在负载均衡设备上就截止,不会影响后台服务器的正常运营。

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

10、反向代理是代理服务器的一种。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。

11、启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级社区活跃,各种高性能模块出品迅速

二、Apache特点

1、select同步阻塞。

2、一个连接对应一个进程。

3、用进程处理用户请求,用MPM(多处理模块)来绑定到网络端口上,接受请求,调度子进程处理请求。

4、当用户请求过多时,开启的进程较多,占用内存大,每秒最多的并发连接请求最多不超过3000个。

5、一个进程死掉时,不会影响其他的用户

6、apache的rewrite比nginx强大,在rewrite频繁的情况下,用apache。

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

8、apache更为成熟,少bug,nginx的bug相对较多。

9、apache超稳定。

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

11、apache在处理动态请求有优势,一般动态请求要apache去做,nginx适合静态和反向。

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

原文链接:https://blog.csdn.net/sosemseo/article/details/91564589


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!