在许多网站上,他们可以提供各种服务。
例如,https://www.ncbi.nlm.nih.gov, 有
- https://www.ncbi.nlm.nih.gov/pubmed/
- https://www.ncbi.nlm.nih.gov/geo/
- https://www.ncbi.nlm.nih.gov/pmc/
...
这些服务完全不同,应该由组织内的不同人员维护。虽然看起来只是一个域,但这些服务应该托管在不同的物理服务器上,以处理大量 Web 请求。
但我不太明白这是怎么做到的。如何让多个物理服务器看起来像一个域?有人能告诉我目前有什么软件技术可以做到这一点吗?
答案1
这些都是反向代理。您可以设置主 Web 服务器,以便其他服务器的内容显示为反向代理的子目录。
例如如何设置:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
这可以用于多种目的。
例如,每个真实服务器主机都有一个私有 IP,要将它们全部暴露到互联网上,我们需要使用某种 NAT 或代理。如果有许多服务器,则除了代理之外没有其他选择,因为您无法为多个主机设置 nat。
另一个原因是让它们共享 cookie;Web 客户端将向每个子目录发送相同的 cookie,因为从它的角度来看,这是一个单一的 Web 主机。其他同源策略也是如此。
第三个原因是 HTTPS 条带化:主主机具有 HTTPS 证书,由某个团队进行安全管理。然后通过物理保护线路上的 HTTP(不加密)进行反向代理。
最后一个例子是负载共享,您可以在其中设置代理到一组服务器并将请求转发到负载最少的服务器。