nginx与ngrok不在同一台机器,如何用阿里云搭建自用的内网穿透服务?

众所周知,做微信公众号开发时,调试需要接收来自腾讯的服务器请求。因为我们的开发服务器都是在内网,所以腾讯的服务器请求无法通过互联网请求到自己的内网服务器上,所以就需要ngrok做一个内网穿透。

如果你刚好有自己的服务器,又想尝试自己折腾一番,可以参照以下资料做ngrok内网转发。我也是按照下面的资料自己搭建成功的,而且写的比较详细。强烈推荐。

参考资料:
https://blog.csdn.net/diaobatian/article/details/100890037
https://www.jianshu.com/p/f5c2a55e77bd

如果你没有自己的服务器,又需要做稳定的内网穿透服务,可以选择收费的。为了避免广告嫌疑,而且我也没用过,所以就不做推荐了。

我在搭建的过程中,受限于环境,因为自己比较喜欢折腾。我的nginx和ngrok不在同一个服务器,我也把它搭建成功了,之所以能搭建成功,首先得理解ngrok+nginx的数据传输过程。

image.png

黑色箭头表示请求、灰色箭头表示响应数据。

如果理解不了这个,那么nginx+ngork分开两台服务器时,就会出错,无法实现。

ngrok是用go语言写的,所以需要云服务器安装go语言的环境。
按上面的资料安装完成后,启好ngrok服务后,我本机的客户端一直无法连上ngrok服务。

多次尝试后才知道,腾讯到nginx走的http请求,nginx到ngrok走还是http请求,而ngrok到本机,以及本机回传给ngrok。走的却不是http请求,不要问我为什么知道,因为我自己搭建的过程中测试,用nginx转发请求到ngrok的tunnelchannel结果是无法连通。

后来用了一个办法,将接收请求的域名和响应请的域名分开。怎么操作呢?

比如我现在的域名是example.com.

我响应请求的域名设置的是ngrok.example.com。

接收请求的域名是*.ngrok.example.com。

这块一定要区别开。因为我用ngrok.example.com:4443启动客户端时,会去找对应域名的ip,如果没分开当然好说,一旦分开后,如果这两个域名ip不一样,而你解析成一样了,那么将会带来灾难。

两个解决办法,一个就是将ngrok.example.com解析到ngrok的服务地址上。

另外一个办法就是将ngrok.example.com对应的ip写到自己的host里面。这个办法测试过可以用,上面那办法是我想的,没有测试过,有兴趣的朋友可以测试一下。

文章记录就到这了,如果你在搭建过程中遇到什么问题,可以来这里联系我。我将在力所能及的范围内帮你解决。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

隔壁老易

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值