答案1
(正确的解决方案是让 IIS 服务器支付静态 IP 地址的费用。我不喜欢下面的解决方案,因为它不是“服务器级”稳定的。我没有考虑安全问题 - 根据需要运行适当的防火墙和/或端口限制)
解决方案分为两个部分 - 第一部分是使 Web 服务器可通过“云”访问。为此,我将使用 OpenVPN(这可以替代其他隧道或 VPN)- 具体来说,我将在“云”中运行 VPN 服务器,并让每个 .Net App 服务器与云中的 OpenVPN 服务器通信。我喜欢 OpenVPN,因为当 IP 地址更改时,它可以相当迅速地重新建立,并且它使用 UDP,简单且无处不在。
第二部分是将数据传到世界各地。根据您的具体要求,有很多解决方案。一种这样的解决方案是运行带有 proxy_pass 规则的反向代理,如 Apache 或 NGINX。您可以通过其 OpenVPN IP RFC 1918 地址访问远程服务器,并让 mod_proxy 进行定向。最简单的方法是将 Apache 和 OpenVPN 服务放在同一个 VPN 上,但如果您处理网络路由,您可以将它们放在同一个网络中的不同虚拟机上以实现可扩展性。(请记住,您需要有一个能够相互访问的静态外部 IP 和 VPN“内部/RFC1918”IP。
当然,您不必使用 Apache 或 NGINX。您可以使用 Squid 和静态内容缓存,或者甚至可以完全取消代理并在 VPN 框上使用 IPTables DNAT 规则(如果您同意通过单独的端口访问服务器)。