Nginx
Nginx
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
Apache和Nginx区别:
Nginx
1、轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源。 2、抗并发,nginx以epollandkqueue作为开发模型,处理请求是异步非阻塞的,负载能力比apache高很多,而apache则是阻塞型的。在高并发下nginx能保持低资源低消耗高性能,而apache在PHP处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。 3、nginx在开启时,会生成一个master进程,然后,master进程会fork多个worker子进程,最后每个用户的请求由worker的子线程处理。 4、可以配置nginx的upstream实现nginx的反向代理。 5、nginx作为负载均衡服务器,支持7层负载均衡。 6、nginx处理静态文件好,静态处理性能比apache高三倍以上。 7、支持高并发连接,每秒最多的并发连接请求理论可以达到50000个。 8、nginx配置简洁,正则配置让很多事情变得简单,而且改完配置能使用-t测试配置有没有问题,apache配置复杂,重启的时候发现配置出错了,会很崩溃。 9、用线程处理用户请求,而线程是共享内存的,只需要开启少量进程,多个线程就可以共享进程的内存,占用内存小。 10、一个进程死掉时,会影响到多个用户的使用,稳定性差。 11、nginx的设计高度模块化,编写模块相对简单。 12、nginx本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器。 13、启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级。 14、社区活跃,各种高性能模块出品迅速。
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仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区。
使用场景:
Nginx:
1、 http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
2、 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
- 基于端口的,不同的端口
 - 基于域名的,不同域名
 3、 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
Apache:
1、自己去想
一 、什么是代理
1、代理其实就是一个中介,A和B本来可以直连,中间插入一个C,C就是中介。
2、刚开始的时候,代理多数是帮助内网client访问外网server用的
3、后来出现了反向代理,"反向"这个词在这儿的意思其实是指方向相反,即代理将来自外网客户端的请求转发到内网服务器,从外到内
二、 正向代理
国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个代理进行访问,代理的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们!

三 反向代理
反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器

总结:
两者的区别在于代理的对象不一样:正向代理代理的对象是客户端,反向代理代理的对象是服务端。
负载均衡
1、当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。
2、我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。
负载均衡是用反向代理的原理实现的。
负载均衡方式
1、轮询(默认)
     将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
 
  2、weight权重        
     指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。(权重越高,在被访问的概率越大)
 
  3、url_hash(第三方)
      在upstream中采用ip_hash指令,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器
 
  4、fair(第三方)
     按后端服务器的响应时间来分配请求,响应时间短的优先分配。
 
  
down 表示单前的server暂时不参与负载
weight 默认为1.weight越大,负载的权重就越大。
max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回 proxy_next_upstream模块定义的错误
fail_timeout:max_fails次失败后,暂停的时间。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
 

                
            
        
浙公网安备 33010602011771号