Nginx(一)

Nginx是什么

Nginx同Apache一样都是一种WEB服务器。

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

nginx高并发原理( 多进程+epoll实现高并发 )

  1. Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。

  2. 每个子进程只有一个线程,采用的 IO多路复用模型epoll,实现高并发。

epoll能实现高并发原理

  1. epoll() 中内核则维护一个链表,epoll_wait 方法可以获取到链表长度,不为0就知道文件描述符准备好了。

  2. 在内核实现中 epoll 是根据每个 sockfd 上面的与设备驱动程序建立起来的回调函数实现的。

  3. 某个 sockfd 上的事件发生时,与它对应的回调函数就会被调用,来把这个 sockfd 加入链表,其他处于“空闲的”状态的则不会。

  4. epoll上面链表中获取文件描述,这里使用内存映射(mmap)技术, 避免了复制大量文件描述符带来的开销

内存映射(mmap):内存映射文件,是由一个文件到一块内存的映射,将不必再对文件执行I/O操作

nginx和apache比较

nginx相对于Apache的优点

  1. 轻量级,同样起web 服务,比apache 占用更少的内存及资源

  2. 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能

  3. 高度模块化的设计,编写模块相对简单,社区活跃,各种高性能模块出品迅速

nginx相对于Apache的缺点

  1. apache 更为成熟,少 bug ,稳定性好

  2. rewrite ,比nginx 的rewrite 强大

  3. 模块超多,基本想到的都可以找到

正向代理

正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。

总结来说:正向代理,"它代理的是客户端,代客户端发出请求",是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

正向代理的用途:

(1)访问原来无法访问的资源,如Google

(2) 可以做缓存,加速访问资源

(3)对客户端访问授权,上网进行认证

(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

反向代理

客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。

反向代理,"它代理的是服务端,代服务端接收请求",主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

反向代理的作用:

(1)保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网

(2)负载均衡,通过反向代理服务器来优化网站的负载

反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

相关推荐