RPi 上的 NodeJs Lan 应用程序到谷歌云平台到自定义域
Posted
技术标签:
【中文标题】RPi 上的 NodeJs Lan 应用程序到谷歌云平台到自定义域【英文标题】:NodeJs Lan application on RPi to google cloud platform to custom domain 【发布时间】:2021-12-04 13:44:24 【问题描述】:我已经能够在谷歌云平台上设置我的虚拟机,并且能够使用本教程成功地通过 SSH 连接到我的 RPi:
https://medium.com/jj-innovative-results/how-to-access-a-raspberry-pi-anywhere-with-reverse-ssh-and-google-cloud-platform-59b6a89501a
现在我想将我的 LAN 应用程序托管在 RPi 上的端口 8080 上的 HTTP 数据而不是端口 22 上的 SSH 数据传输到我的虚拟机。我该怎么做?有可能吗?
从那里我计划购买一个域以在互联网上查看我的 LAN 应用程序。我不想使用 remoteit/zerotier 等服务来做这件事
请帮忙
【问题讨论】:
【参考方案1】:出于安全原因,我建议在 Internet 和 SSH 服务器之间设置代理。您可以跳过第 1 步和第 2 步并使用 1024 以上的端口号,例如 8080。切勿直接在端口 80 上运行 SSH 服务器,因为这需要特权。
第 1 步)
安装 Apache 或 nginx。
第 2 步)
在 Apache/Nginx 中设置代理,将端口 80 上的连接转发到端口 8080。
Nginx 配置示例:
server
listen 80;
server_name example.com;
location /
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:8080";
第 3 步)
将 VM SSH 服务器配置为允许端口转发选项 AllowTcpForwarding。
设置隧道以打开 VM 上的端口 8080 并转发到 Raspberry Pi 上的侦听端口(例如 9000)。
在树莓派上运行的示例 SSH 命令:
ssh -R 8080:127.0.0.1:9000 <VM IP Address> <Your credentials>
详细信息。此命令在公共 VM 服务器上打开端口 8080,并将流量转发回您的系统到端口 9000。
注意:我没有测试 SSH 命令,但这应该是正确的。网上有很多例子如link。此答案将帮助您了解流量是如何路由(转发)的。
第 4 步)
将运行在 Raspberry Pi 上的应用程序配置为侦听端口 9000(示例)。
总结,客户端连接到 VM 端口 80,该端口转发到 VM 端口 8080,该端口通过 SSH 隧道转发到具有应用程序侦听端口 9000 的 Raspberry Pi。
当然,您可以更改端口号,我使用唯一的端口号以防止混淆。
【讨论】:
以上是关于RPi 上的 NodeJs Lan 应用程序到谷歌云平台到自定义域的主要内容,如果未能解决你的问题,请参考以下文章
使用格式化从Linux上的NodeJS打印到Star TSP143LAN
如何在我的应用程序中打开窗口并重定向到谷歌播放中的另一个应用程序下载页面