反向代理和网络服务器有什么区别?

What is the difference between reverse proxy and web server?

我在 What is the difference between application server and web server?. Moreover, Difference between proxy server and reverse proxy server 阅读了关于应用程序服务器与网络服务器的精彩文章 post,很好地解释了代理服务器是什么。

我还了解到一些网络服务器,例如 Apache,内置了反向代理。 (Source). Also, Wikipedia (https://en.wikipedia.org/wiki/Reverse_proxy) 有一张图片将网络服务器和反向代理显示为单独的实体。

来源:https://en.wikipedia.org/wiki/Reverse_proxy (image originally via Privacy Canada, now CC0, license info)

所以,我不确定网络服务器和反向代理之间的区别。有人可以阐明一下吗?

Web 服务器侦听 HTTP 请求并通过发回 HTTP 响应来响应这些请求。

反向代理是一种 Web 服务器,它通过实施 HTTP 客户端来确定做出什么响应。

客户端 A 向反向代理发出 HTTP 请求。反向代理向服务器 B 发出 HTTP 请求。服务器 B 向反向代理发送 HTTP 响应。反向代理将该数据作为其 HTTP 响应发送给客户端 A。

A 代理服务器 是一个中间服务器或中间服务器,它通过 Internet 将来自多个客户端的内容请求转发到不同的服务器.反向代理服务器是一种代理服务器,通常位于专用网络的防火墙后面,并将客户端请求定向到适当的后端服务器。反向代理提供额外的抽象和控制级别,以确保客户端和服务器之间的网络流量顺畅流动。

反向代理服务器的常见用途包括:

  1. 负载平衡——反向代理服务器可以充当“交通警察”,坐在后端服务器前面,以最大化速度和容量利用率的方式在一组服务器之间分配客户端请求,同时确保没有人服务器过载,这会降低性能。如果服务器出现故障,负载平衡器会将流量重定向到其余在线服务器。
  2. Web 加速 – 反向代理可以压缩入站和出站数据,以及缓存通常请求的内容,这两者都可以加速客户端和服务器之间的流量。它们还可以执行额外的任务,例如 SSL 加密,以减轻您的 Web 服务器的负载,从而提高它们的性能。
  3. 安全性和匿名性——通过拦截发往后端服务器的请求,反向代理服务器可以保护他们的身份,并作为抵御安全攻击的额外防御手段。它还确保可以从单个记录定位器或 URL 访问多个服务器,而不管您的局域网结构如何。

Web 服务器存储网站内容(例如文本、图像、视频和应用程序数据)并将其传送给请求它的客户端。最常见的客户端类型是 Web 浏览器程序,当用户单击 link 或在浏览器中显示的页面上下载文档时,它会从您的网站请求数据。

Web 服务器 使用超文本传输​​协议 (HTTP) 与 Web 浏览器通信。大多数网页的内容都是用超文本标记语言 (HTML) 编码的。内容可以是静态的(例如,文本和图像)或动态的(例如,计算出的价格或客户标记为购买的项目列表)。为了提供动态内容,大多数 Web 服务器都支持服务器端脚本语言以将业务逻辑编码到通信中。通常支持的语言包括 Active Server Pages (ASP)、Javascript、PHP、Python 和 Ruby.

网络服务器也可能缓存内容以加速传送通常请求的内容。此过程也称为网络加速。

Web 服务器可以使用相同的软件和硬件资源托管单个网站或多个网站,这称为虚拟主机。 Web服务器还可以限制对不同客户端的响应速度,以防止单个客户端独占资源,而这些资源本可以更好地用于满足大量客户端的请求。

虽然 Web 服务器通常托管可在 Internet 上访问的网站,但它们也可用于在局域网(例如公司的 Intranet)中的 Web 客户端和服务器之间进行通信。 Web 服务器甚至可以嵌入到数码相机等设备中,以便用户可以通过任何常用的 Web 浏览器与设备进行通信。