当您从 VPS 上的 1 个 HTTP 服务器向同一 VPS 上的另一个 HTTP 服务器发出 HTTP 请求时会发生什么?

当您从 VPS 上的 1 个 HTTP 服务器向同一 VPS 上的另一个 HTTP 服务器发出 HTTP 请求时会发生什么?

我在 1 个 VPS 上运行了 2 个 HTTP 服务器。如果我从 1 个服务器向另一个服务器发出 HTTP 请求。具体会发生什么?它会通过互联网再返回吗?还是在 VPS 内处理?

托管:Digital Ocean
系统:Ubuntu 14.04
服务器:Nginx
Web 服务器 1:PHP
Web 服务器 2:NodeJs

答案1

这取决于一些因素。

您的 VPS 所做的第一件事是解析它尝试访问的服务器的域名。如果您在 中有条目/etc/hosts,则该 DNS 解析将在本地进行(不会进入更大的互联网)。否则,需要发送和接收一些 UDP 数据包。

一旦完成该步骤,并且将人性化的名称映射到 IP 地址,如果该 IP 地址映射到本地 NIC,则数据包将在本地路由。否则(例如,如果您使用代理),它们将被路由到框外,在那里它们将循环传播并直接返回到 VPS(假设没有人 MITM 连接)。

因此,假设您有一个主机名到本地 IP 地址的本地映射,它不应该产生外部互联网流量。

不过,我猜测有办法确保即使是本地 IP 也可以使用 RPDB / netfilter 进行外部路由。

无论如何,检查此类事情最简单的方法是使用tcpdump并分析输出wireshark

相关内容