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机器。所以这台机器压力会最轻。

 

 

 

 

 

 

  

 

posted @ 2020-12-14 20:18  满眼都是她  阅读(125)  评论(0)    收藏  举报