我的博客使用的是开源博客:https://gitee.com/mtons/mblog ,经过我的一次次魔改,是越来越丑了。。咳咳,这暂且不提。从以前大学的时候我就有写博客的习惯,主要是在博客园写一些随笔。毕业后开始倒腾自己搭建博客,尝试各种之后,最终发现了很多开源的基于java的博客程序,这和我的专业就很对口了,最后选择了mblog(其实还是踩坑了,技术栈比较小众,改造难度比较大)。当初选择mbolg的主要原因就是它是个单体项目,前后端不分离,维护起来要简单的多。
家庭网络开通外网ip
以前我买了腾讯云的服务器4C8G配置的一年400,优惠期过了之后一年一千多我记得,这个价格就有些不能接受了。平时在上面搭建我的博客程序,安装docker,各种倒腾。。。虽然这个服务器配置很高了,但是如果运行了太多程序,它还是hold不住,总不能再升配吧?后来我仔细想了想,我太傻了,买服务器最贵的是什么?处理器、内存、硬盘还有带宽,我家里有一台12年的联想笔记本,8核I5处理器,16G内存,500G固态,相对于买腾讯云服务器,不太香了?想法是挺好,家里的笔记本在外网又如何能访问的通呢?
没错,这里就需要申请开通外网ip。我用的网络是青岛电信,可以直接申请开通,开通要点:
- 电信给开通好外网IP权限
- 家里默认的光猫路由器上网模式改为桥接模式上网
- 使用自己的路由器拨号上网
做完以上几部,自己的家庭网络就拥有了从外部访问的能力
端口转发设置
每个自己的路由器都有端口转发功能,将外网访问的地址+端口号转化为内网访问的地址和端口号,需要注意的是,就算运营商给开通了外网ip权限,端口号却是有限制的,比如80端口号、443端口号都是封禁状态,目的就是为了防止你在家搭建网站,但是这不要紧就算不是默认80端口号,8080总行了吧?
假设我将我的博客程序放到了192.168.1.100的笔记本上,开放的是80端口号,我的主路由使用了Ikuai软路由,那它配置端口转发如下
这样我可以通过外网ip+8080端口号就能访问到内网的192.168.1.100的80端口号上的服务。
动态域名(DDNS)配置
如何知道自己的外网ip是什么?打开如下网址:https://www.whatismyip.com.tw/ 然后就会显示自己的ip地址是多少
需要注意的是运营商开通的外网ip,是会变的,没有固定ip的情况下,只能通过动态域名绑定动态ip地址
通过绑定动态域名,能通过域名+端口号访问内网服务了。
跳板机
运营商禁用了80和443端口号,这导致就算使用了动态与名,也必须得加上比如8080端口号访问内网服务,那咱们访问百度也没加8080端口号访问呀。
要想使用域名80端口号访问内网服务,必须有一台外网主机,比如腾讯云、阿里云卖的ECS主机或者轻量云服务器。整体思路就是利用这台外网主机做跳板机访问内网服务。
我在腾讯云买了一台香港的轻量云服务器,以前比较便宜,一年288,30Mb带宽,1C2G的配置,我给它配置了个域名解析:blog.kdyzm.cn,然后安装了nginx,配置了反向代理:
listen 80;
server_name blog.kdyzm.cn;
location / {
proxy_pass http://动态域名:端口号;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
client_max_body_size 2m;
}
然后就能直接通过域名访问内网服务了,完美!
注意:本文归作者所有,未经作者允许,不得转载