我的办公室里有一个非常糟糕的 VPS 和一台非常好的计算机(具有非常好的互联网连接),但是位于 NAT 后面。
通过这样做是否可能暴露我的好电脑:
- 好的计算机连接到 VPS(并保持连接)
- 用户连接到VPS,并向VPS发送http(s)请求。
- VPS 只是将 http(s) 请求传递给好计算机(包括一些标识,以便服务器可以区分连接)
- 好电脑将 http(s) 响应传递给 VPS
- 反过来,VPS 接收 http(s) 响应,并将其传回给客户端。
可以这样做吗?(顺便说一句,VPS 和好电脑位于不同的国家)
还有,这是“反向代理”吗?我听说反向代理是通过放置中间服务器来保护内部网络的。
这会影响 SSL 配置吗?(或者使 SSL 变得不可能?)我打算在好的计算机上运行 nginx。
答案1
是的 - 它只是一个 VPN,但尝试通过 HTTP 实现 VPN 隧道有点愚蠢:
[client]
^
|
| HTTP[S]
v
[VPS running proxy]
^
| VPN
|
V
[Good computer]
如果 VPS 和好计算机之间存在 NAT,那么使用隧道 VPN 协议是可行的方法。
据我所知,squid 和 varnish 都不支持 SSL - 虽然您可以添加 stunnel 来终止 SSL,但使用 nginx 作为代理更有意义。
做吧非常确保 VPS仅有的代理与指定主机的连接。
答案2
就我个人而言,我只会为 http 和 https 工作负载使用 squid 反向代理,因为它可以节省通过办公室连接进行的数据传输。SSH 流量很小,因此只要您使用共享密钥身份验证而不是密码身份验证,直接进行连接就可以了。
另一种策略(如果保护内部网络很重要)是使用本地网络内的 DMZ。好电脑将位于 DMZ 中并直接为客户服务。
当然,这些都不是最佳实践。反向代理通常用于负载平衡和释放主 Web 服务器的 CPU 或带宽,而不是用于隐藏服务器。您必须记住,您的计划将增加每个请求的延迟,尤其是在本地计算机和 VPS 之间使用 VPN 的情况下。