Nginx服务器以及反向代理功能的研究

Nginx

nginx是一个性能高效的http服务器,源码采用C语言写的。多进程fork+epoll实现的高性能网络服务器代码。
1.实现了一个简单的负载均衡器操作
2.解决了多线程使用epoll的服务器server的“惊群现象”
nginx区别于其他的http服务器的一个最大优点是:可以做反向代理服务器(负载均衡器)使用

nginx和apache的区别

	两者最核心的区别在于apache是同步多进程模型,一个连接对应一个进程,
	而nginx是异步的,多个连接(万级别)可以对应一个进程。一般来说,需要性能的web服务,用nginx。
	如果不需要性能只求稳定,更考虑apache。

相同点

1、都是HTTP服务器软件
2、功能上都采用模块化结构设计
3、都支持通用的语言接口,如PHP、Perl、Python等
4、支持正向、反向代理、虚拟主机、URL重写、压缩传输、SSL加密传输 

不同点
1、Apache处理速度很慢,占用很多内存资源
2、功能上,Apache所有模块支持动静态编译,Nginx模块都是静态编译的
3、处理连接方式:Nginx支持epoll,Apache不支持

nginx如何实现高并发?

首先,一个主进程,多个其他工作的进程,每一个工作进程可以处理多个请求。每进来 一个request,就会有一个工作进程去处理。但不是全程的处理,处理到可能发生阻塞的地方。比 如向后端服务器转发request,并等待请求返回。那么,这个工作进程就处理其他request。一旦后端服务器返回,出发这个时间,这个工作进程才会继续处理它。由于 web服务器的工作性质决定了请求大部分时间都是花费在传输中,实际在server机器上的时间并不多,这也就是解决高并发的关键。

nginx如何处理http请求?

nginx使用反应器模式。主事件循环等待操作系统发出的的信号。这样就可以从套接字读取到缓冲区并且处理。单个进程可以处理数万个并发连接。

什么是反向代理和正向代理?

正向代理:

被代理的是客户端,比如通过XX代理访问国外的某些网站,
实际上客户端没有权限访问国外的网站,客户端请求XX代理服务器
,XX代理服务器访问国外网站,将国外网站返回的内容传给真正的用户。
用户对于服务器是隐藏的,服务器并不知道真实的用户。

举个例子,用图来说明一目了然。
Nginx服务器以及反向代理功能的研究_第1张图片

反向代理:

被代理的是服务器,也就是客户端访问了一个所谓的服务器,
服务器会将请求转发给后台真实的服务器,真实的服务器做出响应,
通过代理服务器将结果返给客户端。服务器对于用户来说是隐藏的,
用户不知道真实的服务器是哪个。

Nginx服务器以及反向代理功能的研究_第2张图片

反向代理的优点:

1.解决了网站服务器对外可见的问题。
2.保护了真实的web服务器,web服务器对外不可见。
3.加快了对网站的访问速度,减轻了web服务器的负担,反向代理具有缓存页面的功能,如果用户需要的内容在缓存中,则可以直接获取,减轻了web服务器的负担,也加快了用户的访问速度。

你可能感兴趣的:(c++)