如何代理来自任意 IP 的调用以从单个授权 IP 退出到客户的网络服务器?

如何代理来自任意 IP 的调用以从单个授权 IP 退出到客户的网络服务器?

我有一个网络服务器。该服务器被授权调用另一个私人客户的 API 服务器

注意:此 Web 服务器位于我们办公室内部。我们的办公室位于 VPN 后面,因此只有 VPN 授权用户才能从外部访问 Web 服务器

仅用于开发目的,我们需要能够从其他未经授权的 IP 调用此服务器

我的想法是准备“一些东西”来接收来自任何地址并转发到客户的 api 服务器,并且显然要将来自 Web 服务器的响应回复给正确的 ip/客户端。

沟通总是从我们的办公室开始,客户的 api 服务器从不呼叫我们。

我如何/可以安装一些东西来允许同事对我的 IP、当然是自定义地址和域进行 API 调用,然后将每个请求透明地路由到客户的 API?

例子:

家里的 Ugo 的 IP 是 3.3.3.3,需要对 10.10.10.10 进行 API 调用。Stefano 需要从 IP 4.4.4.4 调用 10.10.10.10

但只有 1.1.1.1 被授权呼叫 10.10.10.10。

我们想要在 1.1.1.1 上安装一些东西,以便每个 ip 呼叫 ip 都会将呼叫转发到 10.10.10.10。

有类似的东西存在吗?我们可以在 linux/windows 或其他平台上实现它

抱歉,这个问题让我很困惑,我是一名程序员,而不是网络工程师或任何其他人。

答案1

这几乎就是“反向代理”所做的。您可能已经在 Web 服务器设置中使用了反向代理,或者您可以配置 Nginx 或 Apache 来完成这项工作 - 听起来不需要任何特殊配置,只需要最基本的“ProxyPass”。

然而,你目前受到的 IP 限制是有原因的——你甚至可能有合同义务防止外部人员滥用你被授予的访问权限。所以在我看来,你应该在代理设置中添加一些身份验证(例如 Apache 的“AuthType Basic”或至少“Require ip <stefano_ip>”),否则有人可能会发现开放 API 端点,而其他私人客户可能会完全撤销您的访问权限。

或者,也可以使用“正向”HTTP 或 SOCKS 代理(又名“常规”类型的代理,例如 Squid 或 Apache),尽管调用者必须明确使用该代理,这在某些 HTTP API 中可能会很烦人(而反向代理看起来就像一个常规的 Web 服务器)。

如果允许开发人员直接通过 SSH 连接到 Web 服务器,他们可以在 SSH 客户端中配置一个隧道(例如选项ssh -D),从而允许他们使用服务器的 IP 地址连接到任何他们想要的东西。

(最后,进一步概括一下,可以设置一个 VPN 供开发人员使用...但在生产网络服务器上这样做可能不是一个好主意——我只是提到它是“借用另一个 IP 地址”的最通用方法。)

相关内容