Nginx 就是反向代理服务器,代理服务器一般是指局域网内部的机器通过代理服务发送请求到互联网上的服务器,代理服务器一般作用于客户端。比如 GoAgent,FQ 等等。如下图:
上图中,Web代理服务器扮演了客户端或服务器角色,如下:
(1)对于 Web 客户端来说,代理服务器扮演的是服务器角色,接收请求(Request),返回响应(Response)
(2)对于 Web 服务器来说,代理服务器扮演的是客户端的角色,发送请求(Request),接收响应(Response)
一个完整的代理请求过程如下:
(1)客户端与代理服务器创建连接
(2)根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或则获得目标服务器的指定资源
Web 代理服务器是网络的中间实体,它位于 Web 客户端和 Web 服务器之间,扮演“中间人”的角色,Web 代理服务器既是 Web 服务器又是 Web客户端。
Web 代理服务器是介于 Web 客户端和 Web 服务器之间的另一台服务器,有了它之后,浏览器不是直接到 Web 服务器去取回网页,而是通过向代理服务器发送请求,请求会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器(Web 客户端)。
正向代理服务器是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取的内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端,客户端必须要进行一些特别的设置才能使用正向代理。
注意:正向代理客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。
反向代理服务器也是一个位于客户端和原始服务器之间的服务器,在代理服务器端接收到客户端的请求时,把客户端请求分发给具体的服务器进行处理,然后再将服务器的响应结果反馈给客户端。
反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间中的内容发送普通请求,接着反向代理将判断向哪个原始服务器转交请求,并将获得的内容返回给客户端。
Nginx(engine x)就是其中的一种反向代理服务器软件,是俄罗斯人 Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器。也是一个 IMAP/POP3/SMTP 代理服务器,也就是说,Nginx本身就可以托管网站,进行 HTTP 服务处理,也可以作为反向代理服务器使用。
Nginx 的两位合作创建者 Igor Sysoev 和 Andrew Alexeev 在一个 InfoWorld 的采访中透露了他们下一步的开发计划, Sysoev 在该采访中透露:
“我们打算支持 JavaScript 配置,用户可以在 Nginx 配置中使用 JavaScript。我们计划让配置更有效率,同时要开发一个灵活的应用程序平台。你可以在配置里面通过 JavaScript 片段更灵活地处理请求、过滤响应、修改响应。最终 JavaScript 会作为 Nginx 的一种应用程序语言来使用。现在我们仅支持 Perl 和 Lua,其中 Perl 是我们自己的模型,而 Lua 是第三方模型。我们很可能会在下一年将该功能添加到Nginx 中。”
另外,随着 Nginx 用户数量的迅速增加,影响力的不断提高,其团队也推出了自己的商业版本 Nginx Plus。
根据官方给出的数据,能够支持高达 50,000 个并发连接数的响应。
处理静态文件,同样起 web 服务,比 Apache 占用更少的内存及资源,所以它是轻量级的。
配置简单,基本在一个 conf 文件中配置,性能比较稳定,可以 7*24 小时长时间不间断运行工作在网络的 7 层之上,可以针对 http 应用做一些分流的策略,比如针对域名、目录结构。
能够根据域名、URL 的不同, 将 HTTP 请求分发到不同的后端服务器群组。
Nginx 可以做高并发的负载均衡,且 Nginx 是开源免费的。
Nginx 代码完全用 C 语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX 以及 Microsoft Windows,由于 Nginx 是免费开源的,可以在各系统上编译并使用。