Skip to main content

自己之前网站所在的阿里云服务器5月份就要过期了,考虑到学生认优惠已经过期,最基础款的应用服务器一年的费用都需要1k以上,再加上网站极低的使用率,继续续费已经不是一个明智的选择了(因为贫穷)。正巧去年买的Newwifi3路由器可以刷写Padavan固件,就考虑在路由器上搭建本网站,通过内网穿透实现低成本建站的目标。

建站目标:低成本、速度可用、带顶级域名的个人站

实现方式:路由器刷写Padavan固件,通过ONMP搭建网站环境,利用内网穿透工具获取公网IP并绑定顶级域名


  • 刷写Padavan固件

Padavan固件有很多编译版本,这里选用的Hihiboy编译的最新版,因为其功能更完善,自带各种插件,方便调用。同时日常使用也有许多便利性。

Hihiboy的Padavan固件可以在https://opt.cn2qq.com/下载,选择对应路由器的版本,进入Bleed界面刷写即可


  • 开启ONMP服务

1.打开Entware软件源。

  • Entware软件源可以提供丰富的安装包,方便后期进行各种网站功能补全
Entware开启方式

2.配置opt环境。

  • 准备好一个高速U盘,格式化为ext4格式,插入路由器
  • 按图调整路由器中对应选项,将opt镜像设置为19999M,方便后期使用
  • 更新opt及script,并应用页面设置。
  • 确认opt及script文件为最新版之后即可开始下一步
配置扩展环境

3.搭建ONMP环境

  • 开启ONMP开关,并按照图片设置对应选项。滑动到页底保存选项并等待生效。
    • 若Log中提示Nginx未启动、LNMP未找到等问题,请手动安装ONMP环境:
      • 打开Shellinabox或者连接路由器SSH。扩展功能-配置扩展环境-网页终端中可以找到Shellinabox
      • 按照https://github.com/xzhih/ONMP中的指导手动安装ONMP服务
      • 确认安装完毕后,点击路由器中的重启LNMP按钮,等待重启并加载完毕

4.安装网站程序,并测试能否打开

  • 这个就不多解释了,上一步如果正常操作,可以在内网中通过对应端口访问到目标网站。
  • 对phpMyAdmin进行设置,修改账户密码新建wordpress数据库

至此,ONMP环境已经配置完毕,已经可以实现内网访问路由器上的网站了。如果要求不高,在这一步就可以开始对Wordpress或者其他程序进行设置,并在内网使用。


  • 设置内网穿透

内网穿透的方式有很多,有公网IP的同学可以使用DDNS,路由器内置了很多DDNS工具可以使用,简单配置后就可以通过直连路由器访问网站了,速度取决于你的宽带上下行速率,设置操作也很简单,这边就略过不提了(实名羡慕可以开公网IP的小伙伴)

如果你跟我一样,坑爹的ISP不提供或者说要加强才会给你动态公网IP,那么你就可以通过下面的操作实现外网通过域名访问路由器上的网站。这里使用的是内网穿透插件,比如花生壳Oray、Ngrok、Frp等,路由器固件中自带了这些插件,调用起来非常方便。

  • 花生壳Oray内网穿透

小白或者要求不高的小伙伴,可以选择花生壳Oray进行穿透,其特点是:

  1. 设置简单易上手
  2. 自带二级域名,在国内通过二级域名建站可以不备案
  3. 提供免费服务,白嫖就是快乐!!(但是使用内网穿透还是要象征性交1软妹币)

当然缺点也非常明显,免费版速度慢(1Mbps)、每月只有1GB流量、只能用2条映射、不能使用Https协议,这就看你的个人需求了。如果只是简单的静态页面,使用花生壳来内网穿透是非常合适。(花生壳细分收费项目是真的多)

这里简单介绍下花生壳内网版使用方法:

  • 路由器中开启花生壳内网版的开关,并应用设置,稍加等待后即可刷新出SN码
  • 进入花生壳管理,绑定自己的花生壳页面,并申请自己的花生壳二级域名(交出1元钱,另外为什么不绑定自己的顶级域名呢?因为顶级域名绑定是要收费的!!)
  • 在页面中增加指向路由器对应端口的Http映射,保存,等待生效
  • 若生效成功,你应该在路由器的Log中看到花生壳内网版已启动等消息,若一段时间后仍未生效,请重新启动路由器的花生壳。
花生壳内网穿透开关

一通轻松的操作过后,你就可以用花生壳的域名在外网有那么一点龟速的情况下访问路由器上的网站了,可能这就是轻松操作代价吧~

  • Ngrok/Frp内网穿透

这两个内网穿透工具使用上的操作都差不多,所以就只挑我现在用的Frp来讲了。

Frp内网穿透的方式和花生壳的差不多,都是内网将数据发送至第三方服务器,再通过第三方服务器转发至你的客户端。为了自己的信息安全,一般都需要开启Https。如果需要启动Frp服务,你需要找到一家Frp服务商,网上有很多家服务商提供免费及收费的服务,可以根据自身需求进行选择。下图以供参考:

Frp服务商

这里推荐的是Sakura Frp,免费版的资源足够用,服务器选择多,提供5个隧道及10GB的月流量,并且可以通过每日签到赠送流量。最最最重要的是,免费版竟然可以通过Https协议,将自己的顶级域名链接国内的服务器进行访问,也就是说速度会相当的快。真的是非常良心了。

  • Sakura Frp内网穿透
  1.  进入Sakura Frp主页,注册用户,并完成实名制认证(提交1软妹币即可,并且这1软妹币是可以退回的!)
  2. 选择一条可用隧道,选择Https协议创建并关联路由器对应端口,如PHP探针192.168.1.1:81,填入自己的域名,并保存,此处端口请选择443
  3. 复制配置文件至路由器的Frp设置页,保存,并开启Frp服务。(直接覆盖路由器的设置即可,若Frp服务未启动请再次更新Opt扩展环境)检查Sakura管理页中隧道是否上线
  4. 将自己的顶级域名,CNAME解析到对应的Frp节点服务器(注意是CNAME!!!)
  5. 等待5分钟,用Ping.cn测试域名是否链接到对应Frp服务器(判断IP所在位置是否是对应Frp服务器)

到这一步,已经完成了80%的操作了,如果你不使用Https服务进行映射,那么请选择海外节点,并且操作完成后,在此处应该可以通过域名正常访问网站了。

*(注:若第3步完成后,隧道仍未上线,请在路由器Wan口Upnp设置中,手动映射端口,如图所示)

手动映射端口

接下来的内容与Https服务的配置有关,路由器的ONMP环境有些奇怪,所以单独进行说明。


  • ONMP环境下开启网站Https协议

很遗憾,ONMP环境内置的Nginx默认不开启Https,导致这一步没法偷懒完成,如果觉得麻烦可以跳回上一步,通过Http协议,用大陆外的Frp服务器进行内网穿透网站访问。

  • 查询nginx模块

进行这一步,为了方便起见,请开启Padavan固件的SSH接口,并下载Putty软件。

通过Putty SSH连接路由器,登录你的路由器管理账号,用以下命令查看Nginx版本。

Nginx -V

此时会弹出一大串文字,注意观察是否有 Build with OpenSSL

nginx -V查看当前nginx版本及模块

若有,则可以进行下一步。若没有,请通过以下命令安装OpenSSL

opkg install openssl
  • 申请域名的SSL证书(若已有可跳过)

域名证书可在域名注册服务商处申请,具体请看域名管理后台。为了方便起见,这里建议将域名的DNS解析至Dnspod,因为他们家申请免费SSL证书超级快,而且简单易操作。

若你已经将域名解析至Dnspod,只需要在域名管理界面点击对应域名的SSL图标即可申请证书,证书办理成功后将通过邮件通知你。需要注意的是,免费版本的SSL证书有效期限是一年。

  • 网站挂载SSL证书并启用
  1. 打开路由器的Filemanager(在搭建Web环境这个菜单里)
  2. 在/opt/etc/nginx/处创建一个Cert文件夹,将你下载到的SSL证书crt和key文件上传
  3. 在Vhost文件夹中创建一个Https.conf文件,并编辑填写下列代码
server {
    #SSL 访问端口号为 443
    listen 443 ssl; 
 #填写绑定证书的域名
    server_name 你的域名; 
 #证书文件名称
    ssl_certificate /opt/etc/nginx/cert/你的cert文件名.crt;
    ssl_certificate_key /opt/etc/nginx/cert/你的key文件名.key; 
    
    ssl_session_timeout 5m;
 #请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
 #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;
    location / {
    #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
    root /opt/wwwroot/WordPress/;
    index index.html index.htm index.php tz.php;
    #php-fpm
    include /opt/etc/nginx/conf/wordpress.conf;
    }
}

保存文件,并通过路由器菜单重启ONMP服务。

重启完成后,使用 nginx -t 查看443端口是否打开,若已打开,则整套操作完毕


聊一下目前的使用体验吧,网站现在通过内地的服务器进行数据转发,速度相对于花生壳的免费套餐来说快了将近10倍,整体体验蹭蹭往上涨,相比之前在阿里云的建站成本,现在这套方案仅仅只需要域名的费用,就可以达到近似阿里云基础版网站服务器的速度,甚至比它更快,简直不要太快乐了!!

Sakura Frp免费版提供5条隧道,如果你搭建的监控或者NAS需要进行公网访问,也可以利用剩余的隧道做不少事情。并且Sakura还有免费的高防服务器,简直是业界清流了!

当然白嫖的缺点也是有的,因为网站只做了Https映射(也只能通过Https映射访问),所以正常通过80端口访问网站,将会被IDC限制,目前的想法是新建一个国外的Http隧道,通过端口转发80流量到443,应该可以解决这个问题;另外是稳定性问题,域名SSL证书偶尔被花生壳劫持、Frp服务器不稳定等问题,都会给网站连通率造成一定影响,所以最好不要在上面建重要的网站,个人站点还是可以一直挂在上面的。

整个流程里最难的是最后一步,也就是在ONMP环境里开启Https并挂载SSL证书,走了不少弯路,不过好在最后各种折腾之下解决了。

后期在使用上,可以对网站做一些优化,比如安装静态化插件、开启Gzip等等,也可以给路由器打个鸡血,在Bleed界面里可以对Newwifi进行超频,我现在用的这台就是日常稳定1Ghz的CPU,同时承受20个访问量也不是问题。

但是…这台路由器只有512MB的内存,在进行一些比较消耗内存的操作,比如上传大型图片生成缩略图的时候,会导致网站服务假死,这个时候别慌张,等待路由器处理完图片,刷新页面即可恢复访问。这个问题目前还没有解决办法,你可以尝试开启路由器的内存Swap,应该能缓解一些。

以上,有机会再写点关于自己折腾的事情~

Leave a Reply