apache - 是否可以在计算机上托管网站但使用来自谷歌云虚拟机上的 vpn 服务器的静态 IP?
问题描述
我的网站在谷歌云虚拟机上启动并运行。但它运行缓慢,因为我只使用最便宜的。在将虚拟机升级到更强大的虚拟机之前,是否可以使用来自谷歌云虚拟机的 IP 在我自己的计算机上托管网站?我使用 softether 在其上成功设置了一个 vpn 服务器(检查我计算机上的 whatsmyip 显示来自 google cloud vm 的公共 IP)。任何提示和帮助将不胜感激。
解决方案
VPN 通常用于传出连接,而不是传入连接。一般来说,您需要在您的云实例上运行某种瘦服务器,它将所有传入连接转发到您的家庭计算机。从访问者的角度来看,他们将连接到云 IP,但所有工作都将由您的家用 PC 完成。
当然,您的家用 PC 可能会有一个动态 IP,因此它必须保持服务器对此进行更新。
这是一个非常简单的实现。实际上不要这样做,这只是一个说明:
- 在您的家用 PC 上运行您的网站,以便它在例如。
localhost:8000
- 在您的家用 PC 上设置 SSH 服务器
- SSH 进入云电脑
- 从那里,通过 SSH 转发 SSH回到您的家庭 PC
localhost:8000
- 在您的云 PC 上运行反向代理(例如 nginx)并告诉它代理到
localhost:8000
只要连接有效,请求就会通过 SSH 代理到您的家用 PC。这显然不是一个方便的设置,并且由于许多原因,让云计算机 SSH 进入您的家庭 PC 是一个坏主意。您可以尝试将 SSH 限制在您的家用 PC 中,或者甚至在家中运行 VPN服务器并让您的云实例连接到该 VPN 以访问该网站。但是,这仍然不是最佳实践方法。
更好的方法是:
- 获取一个稳定的 URL(不必是完整的域,只要是可以转发给你 IP 的东西)
- 在你的云服务器上运行一个 nginx 反向代理,并告诉它代理到这个 URL
- 确保在 IP 更改时 URL 指向您的家用 PC(理想情况下,您希望每次打开家用 PC 时都会运行“更新 IP”脚本)
如果您不想要 URL,您还可以编写一个简单的脚本来hosts
使用您家用 PC 的 IP 更新远程计算机上的条目。
推荐阅读
- java - FusedLocationApi 的问题,已弃用
- javascript - Binance WSS api url is being treated as HTTPS on both Google Chrome and Firefox
- pdf - Error: "There was an error opening this document. The file is damaged and could not be repaired"
- python-3.x - Persian text can not be parsed correctly when crawling a persian website
- xamarin.forms - Aspect ratio of image in xamarin form
- c++ - 元组的排序向量在c ++中不起作用
- python - FFMPEG, running through subprocess, getting error: "pipe:: Invalid data found when processing input"
- java - SpringMVC RestEasy Integration Beans aren't injected to Controller classes
- hangouts-api - 获取报告 G Suite 帐号
- node.js - 可以在构建期间在 Azure DevOps 的源目录中创建文件