起因
- 由于电脑处于学校内网,没有公网IP,一般情况下,公网是无法访问自己的电脑的
- 出于一些原因自己的电脑或者内网中设备需要对外提供服务
- 尝试比如花生壳、NAT123之类的,效果不尽人意
原理
- 原理主要是利用SSH隧道 + Node.js反向代理
- 用户请求 -> BAE Node.js -> SSH隧道 -> 内网服务器
预备工作
一般情况下百度云不会提供Port服务,需要自己主动申请Port,申请通过大概需要一天
申请通过后,先创建
Node.js项目和Port服务创建好后将
Port的端口改为22,如图所示

- 复制代码库地址,克隆下来

添加公钥
- 创建公钥及获取公钥内容
1 | $ ssh-keygen #创建公钥 |
打开刚从BAE克隆下来的文件夹,将得到的公钥内容复制到
app.conf文件中
这时可以通过
ssh bae@[ip] –p [port]测试,看能否正常连接
设置Node.js反向代理
- 在
package.json文件中dependencies下加上以下内容,如图
1 | "http-proxy" : "1.9.0" |

- 将以下内容替换
server.js原有的内容
1 | /* |
建立SSH隧道
- 下面的
8090与上面server.js文件里面的8090对应,请把125.221.232.253:80改为想映射的网址,请把111.206.45.12改为百度云Port服务对应的IP,把30349改为百度云Port服务对应的端口
1 | ssh -C -N -f -g -R 8090:125.221.232.253:80 bae@111.206.45.12 -p 30349 |
效果展示
访问百度云提供的域名,已成功映射

