树莓派搭建nginx Web服务器,实现公网访问

在上一篇文章中介绍了如何利用树莓派搭建自己的Web服务器并在内网实现不同设备间的访问,本篇文章是在上一篇文章基础上继续写的,所以没有看过上一篇文章的可以先去看一下上一篇文章,这是传送门
所谓的公网访问,就是可以在任意的角落,只要能够连接上互联网就可以访问某一特定的IP(域名是IP地址的另一表现形式),但是由于IPv4的地址池并不足够为每一台设备分配一个独立独有的IP地址,所以就没有办法在广域网中通过IP地址去访问你的设备。我们现在所处的网络,是由广域网加局域网组合起来的,就像我们家里的路由器,路由器下面连接的是我们各种设备,比如手机,电脑,平板等~路由器连接在上一个网络当中,有可能是连接在广域网中,也有可能在上一级的局域网中。但是我们在局域网中为什么能跟广域网中的设备进行通信呢,这就不得不提NAT标准了,下面这段话摘录自百度百科-NAT:

NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
另外,这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭。在RFC 1632中有对NAT的说明。

NAT标准的制定在当前IPv4时代确实解决了IP地址枯竭的问题,不过可以预想的是在IPv6时代,或许每一台设备都有自己的IP地址,不过也不太现实,因为GA监管起来可能有点困难,不过还是很期待的~
好了,废话少说,说了这么多,中心思想就是:我们要想在广域网中直接访问我们的设备是不可能的,必须要用点技术手段!
内网穿透技术已经很成熟了,很多公司都有提供这项服务,目前国内外比较知名有这几家:
国内

国外

国外没具体深入去了解,应该还有很多,需要说明是frp是需要一台服务器(具有公网IP)支持的,frp本身不提供服务,但是是一款开源的工具,你可以将它运行在自己的服务器上,然后再大家可以自己去了解一下,frp的作者是国人,有中文文档,可以去详细的了解一下

本文使用的是ngrok,因为国内那几家都是收费的,ngrok也有收费版本,不过还是有免费版本的,NATApp有试用版本,NAT123的官网做的很LOW,没仔细去了解。

ngrok很完整的教程,其实也就那么几步,不过是英文的,下面我就简单把步骤给重复一下,不过你需要先去ngrok注册下账号,注册完账号后会给你一个密钥,后面我们会用到这个密钥的。
ngrok官网传送门
ngrok_web
登录后就会看到这么一个界面,①②③④一共就这四步,都给你列出来了,圈出的地方是两个可以查看你密钥的地方。

下载

sudo wegt https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip

解压

unzip ngrok-stable-linux-arm.zip

连接账户

./ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# xxxxxxxx -> 你的密钥
# 此条命令只需要运行一次,一后再次启动,无需在执行此操作,因为已经记录在本地了

代理

sudo /etc/init.d/ngink start
./ngrok http 80
# 我们需要先运行ngink web服务器,一会才可以通过浏览器访问

当我们运行完最后一条命令时,会出现下面的界面:
ngrok_run
其中第一个箭头所指的意思是当前会话状态,online表示在线。
第二个箭头指的是会话过期时间,过期后应该要重启会话才行,我也没有测试过。
第三个跟第四个箭头指的是,树莓派被映射到广域网中的地址,我们可以通过这个地址进行访问。
下面我们通过这个网址来访问一下,看看是不是树莓派上的我提前上传好的网页。
ngrok_pi
可以看到是我提前上传好的网页~
下面我们再用手机,在4G网络状态下测试一下。
ngrok_phone)ngrok_wx
可以看到在4G下通过手机浏览器和微信都可以打开,说明我们已经成功将我们的树莓派映射到公网去了,我们每一次访问也可以看到是有http request的。
ngrok_http_request
这样就完成了一个完整的用树莓派搭建Web服务器的完整教程,没事可以写个网页表表白什么的,是不是?不过,有些妹子不太懂唉,为啥程序猿单身多呢,找个能有共同语言的妹子实在是相信你们懂的!现在不懂,以后也会懂得~啊哈哈哈
当然ngrok,不仅做http映射,还有很多功能,我们可以通过命令查看一下:

./ngrok help

可以看到还有很多命令:

COMMANDS:
   authtoken    save authtoken to configuration file
   credits      prints author and licensing information
   http         start an HTTP tunnel
   start        start tunnels by name from the configuration file
   tcp          start a TCP tunnel
   tls          start a TLS tunnel
   update       update ngrok to the latest version
   version      print the version string
   help         Shows a list of commands or help for one command

免费版有很多限制,比如收费版你可以绑定自己的域名,这样我们访问就更加便捷了,因为免费版你每一次重启分配的域名都是随机的,你永远不知道下一次会给你分配一个什么域名,所以就没法做CNAME解析了,但是收费版会给你分配一个固定的域名,这样你就可以做CNAME解析了,大家可以自行去了解一下,下面是不同的收费标准以及所对应的服务,最便宜的一个月5$,折合人民币30多,感兴趣的可以考虑一下~
ngrok_free
Ending~

今晚在码字的时候,看到一条关于东哥在美国的新闻,如果是真的,那可真就是太失望了,感觉东哥不是这样的人啊,难道真是 妻美不知我东哥?希望是有人恶意抹黑,还是比较信赖二手东的。

欢迎访问我的主页,我会不定期更新一些文章,也欢迎留言哦~
唯有爱与科技不可辜负

请我喝一罐冰阔乐 (^o^)/