我必须设置对远程 API 服务的访问权限,其中请求已列入 IP 白名单。
我遇到的问题是我的网络节点位于云端,并且其 IP 地址经常更改。
因此,我想通过具有固定 IP 地址的服务器代理来自我的 Web 节点的 API 请求。
另一个警告是这些请求必须通过 HTTPS 发出。
因此,我需要以某种方式在一个域上接收 HTTPS 请求、解密它们,然后将请求转发到目标域。
例子:
Web 节点向代理发出请求:https://api.proxy.internal.com 然后代理发出请求:https://external.api.com
这可能吗?我想在 Ubuntu 14.04 LTS 服务器上运行它。
我可以使用 HaProxy 或 NGINX 之类的东西作为反向代理吗?
答案1
您可以使用 HAProxy、Nginx、ATS、Squid、Pound 或仅一组 iptables 规则。
但是您并没有告诉我们太多有关您正在尝试解决的问题的信息。
如果服务需要指定 IP 地址,那么它大概具有一些需要保护的价值 - 您实施的任何措施都应确保有同等或更好的保护。最简单的解决方案可能是使用 HTTPS 访问通过客户端证书进行身份验证的代理节点 - 如何执行此操作取决于 AWS 上的应用程序堆栈。然后在代理节点上重新封装用于连接到 API 的流量。这可以通过一对隧道或者螺柱实例(一个充当您的 AWS 实例的服务器,验证客户端证书,将未加密的流连接到与 API 通信的第二个实例)。
(请注意,您确实需要断开 SSL 连接才能进行身份验证)。
假设将您的服务保留在 AWS 上有一些好处,并且 AWS 无法提供固定 IP 地址,那么您就需要其他地方的固定 IP 地址。虽然有很多便宜的托管公司,但如果您想确保访问服务的高可用性,您将需要在不同位置的 2 个节点以及一种在它们之间分配流量的方法。我个人会选择 haproxy 或磅在您的 AWS 实例上运行,配置为作为简单的 TCP 流在连接上运行(即忽略 HTTP)。