之前写过一篇文章,介绍使用Apache htaccess来实现简单的网址跳转服务,这种方案最大的问题是需要自己有一个稳定的服务器,因为一旦服务器挂掉,整个服务也就不能用了。
我用的服务器是在搬瓦工上,它同时承担着“科学上网”的重任,而最近特殊时期服务器的科学上网服务竟然挂掉了。虽然跳转服务暂时还能用,但找到一种更稳定可靠的方案不得不提上日程。而前不久在product hunt上看到的Unubo,可以完美地解决这个问题。
顺便安利一下我做的一个Product Hunt频道:https://t.me/product_top,会自动发布当天最受欢迎的作品,是发现好产品、寻找灵感的好工具。机器人用Python实现,感兴趣的可以去GitHub围观:https://github.com/maxhis/ph_daily。
0. 什么是Unubo?
Unubo是一个新出来的帮助快速部署web app的服务,支持Node, Python, Go, Ruby等主流语言和MySQL(MariaDB)、PostgreSQL、Redis数据库,每个app都有1GB RAM, 1 CPU, 500MB硬盘的独立配置,对小型app够用。目前还没有实例个数的限制,更让人惊喜的是还有亚洲节点,国内访问速度有保障。更多详细介绍可以登录官网查看,你会发现它真是一个宝库。
1. 用Node.js实现网址跳转服务
在选定了基础服务后,就是实现应用程序部分了。思路很简单:就是在Unubo上搭建一个服务,做301跳转。考虑到实现的便捷性,我选用Node.js来实现。大致步骤如下:
一个方便修改维护的配置表
用于记录URL path与目标地址,这里用JavaScript Object就可以了。
1 | // urls.js |
HTTP请求处理与跳转逻辑控制
方便起见,使用Express做路由处理,查询req.path是否在配置表里,如果在则跳转到对应的目标地址。
1 | // index.js |
完整代码可以查看GitHub:https://github.com/maxhis/oio-redirecting。
2. Unubo配置与部署
Unubo的配置与部署很简单,首先新建一个app,选择你使用的语言,比如Node.js;区域建议选择Asia,可以在国内获得不错的访问速度。
然后选择要部署的代码库,需要先将代码上传到GitHub,再授权要部署的代码仓库即可,部署的时会自动拉取代码编译运行。
需要注意的一点是,还需要配置Commands,也就是启动你程序的命令,如:npm start
,不配置会导致程序运行不起来。
最后点击底部的“Deploy”按钮开始部署,部署成功后就可以访问你的app了,如https://your-app-name.unubo.app
自定义域名
除了默认的unubo.app域名,Unubo还支持自定义域名,同时支持HTTPS。简单来说,就是在域名的DNS管理里添加一个CNAME到Unubo的地址,如 asia.unubo.app, 然后在Unubo的Domains里配置对应的域名即可。
至此,一个替代Apache、且不需要自备服务器的网址跳转服务就完成了,相比自己搭建服务不管是访问速度还是稳定性上都有提升。在各种共有基础服务成熟完善的今天,似乎自己购买服务器搭建各种服务已经显得越来越没必要了。