如何将RPi上LAN Node.js应用通过GCP映射端口绑定自定义域名公网访问
你要的操作完全可行,核心是使用SSH远程端口转发能力,把树莓派本地8080端口的HTTP流量代理到GCP虚拟机端口即可,无需依赖第三方内网穿透服务,具体实现和域名绑定步骤如下:
一、RPi 8080端口流量转发到GCP虚拟机步骤
- 第一步:配置GCP虚拟机SSH权限
编辑GCP虚拟机的/etc/ssh/sshd_config文件,确认以下参数配置正确:
注意:GatewayPorts默认是no,只会绑定本地回环地址的端口,外部无法访问,必须修改为yes才会监听所有网卡的请求GatewayPorts yes AllowTcpForwarding yes
修改完成后执行sudo systemctl restart sshd重启SSH服务使配置生效。 - 第二步:放行GCP防火墙端口
在GCP控制台的VPC防火墙规则页,添加入站规则,放行你要对外暴露的TCP端口(比如本次用8080,后续用80、443也要同步放行),源地址填0.0.0.0/0。 - 第三步:树莓派端建立反向SSH隧道
在树莓派终端执行以下命令建立隧道:ssh -fN -R 0.0.0.0:8080:localhost:8080 GCP虚拟机用户名@GCP公网IP
参数说明:-f表示SSH后台运行,-N表示不执行远程命令,-R后面跟的是远程端口转发规则,意为将GCP虚拟机所有网卡8080端口的请求,转发到树莓派本地的8080端口。 - 第四步:配置隧道保活与开机自启
可以使用autossh工具实现网络波动时自动重连隧道,也可以把上述隧道命令加到树莓派的/etc/rc.local文件,或者配置systemd服务实现开机自动运行。
配置完成后,访问GCP公网IP:8080即可正常访问你的Node.js应用。
二、自定义域名公网发布指引
- 第一步:配置域名解析
购买自定义域名后,登录域名服务商的解析后台,添加一条A记录,主机记录填你要使用的前缀(比如要使用app.xxx.com就填app,要直接用根域名就填@),记录值填你的GCP虚拟机公网IP,保存后等待解析生效,通常10分钟内即可生效。 - 第二步:GCP虚拟机安装Nginx做反向代理
直接用端口加IP访问体验差,也不方便配置HTTPS,推荐安装Nginx做反向代理:- 执行
sudo apt install nginx安装Nginx(Debian/Ubuntu系系统,其他发行版对应替换包管理器命令即可) - 新建站点配置文件
/etc/nginx/sites-available/你的域名.conf,写入以下配置:
server { listen 80; server_name 替换为你的实际域名; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }- 执行
sudo ln -s /etc/nginx/sites-available/你的域名.conf /etc/nginx/sites-enabled/启用站点配置,再执行sudo nginx -t验证配置没有语法错误后,执行sudo systemctl restart nginx重启Nginx生效。
- 执行
- 第三步:配置HTTPS(可选但推荐)
可以使用Let's Encrypt提供的免费SSL证书,安装certbot工具后即可一键申请、自动配置证书和自动续期,配置完成后就可以通过HTTPS协议访问你的应用。
内容的提问来源于stack exchange,提问作者msultan123954
相关产品推荐
相关产品推荐

