Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过两年半了。Igor Sysoev在创建的项目时,使用基于BSD许可。前端
Nginxnginx
apache 仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区web
二者最核心的区别在于 apache 是同步多进程模型,一个链接对应一个进程,而 nginx 是异步的,多个链接(万级别)能够对应一个进程apache
通常来讲,须要性能的 web 服务,用 nginx 。若是不须要性能只求稳定,更考虑 apache ,后者的各类功能模块实现得比前者,例如 ssl 的模块就比前者好,可配置项多。epoll(freebsd 上是 kqueue ) 网络 IO 模型是 nginx 处理性能高的根本理由,但并非全部的状况下都是 epoll 大获全胜的,若是自己提供静态服务的就只有寥寥几个文件,apache 的 select 模型或许比 epoll 更高性能。固然,这只是根据网络 IO 模型的原理做的一个假设,真正的应用仍是须要实测了再说的。后端
更为通用的方案是,前端 nginx 抗并发,后端 apache 集群,配合起来会更好。服务器
互联网企业中常见的开源集群软件有:Nginx、LVS、Haproxy、Keepalived等,硬件有F五、Netscaler等。网络
严格地说,Nginx仅仅是做为Nginx Proxy反向代理使用的,由于反向代理功能表现的效果是负载均衡集群的效果,因此也叫作Nginx负载均衡。并发
反向代理和负载均衡的区别在于负载均衡一般都是对请求的数据包的转发(也有可能会改写数据包)、传递,其中DR模式明显的特征就是从负载均衡下面的节点服务器来看,接收到的请求仍是来自负载均衡器的客户端的真实用户。而反向代理,反向代理接收访问用户的请求后,会代理用户从新发起请求代理下的节点服务器,最后把数据返回给客户端用户。在节点服务器来看,访问节点服务器的客户端用户是反向代理服务器,而不是真实的网站访问用户。负载均衡
Nginx负载均衡的模块主要有两个,ngx_http_proxy_module,ngx_http_upstream_module。编译的时候须要把这两个模块编译进去。异步
反向代理:在收到客户端请求以后,会修目标IP地址和端口
正向代理:在收到客户端请求以后,会修源IP地址和端口
上游服务器:代理服务器后端的哪些真正给客户端提供服务的节点,这样的服务器称之为上游服务器
下游服务器:客户端就是下游节点