WHAT
基于openresty和redis的一个短连接服务
WHY
项目中需要一个短连接服务,用来给用户发短信时缩短短信中的连接
HOW
需要的环境
- ubuntu/macOS
- openresty(一款基于 NGINX 和 LuaJIT 的 Web 平台,可以理解为直接在nginx上执行lua脚本)
- redis
安装redis
1 | ubuntu安装redis |
mac的安装方法,由于电脑上已经装了redis,所以没有重新折腾,具体安装方法详见谷歌
启动redis
1 | 最后的&是为了让redis在后台运行 |
安装openresty
mac命令安装
当然你也可以选择下载源码手动编译
1 | brew install openresty/brew/openresty |
Ubuntu命令安装
1 | 导入openresty的 GPG 密钥: |
启动openresty
和启动nginx操作一样,不过命令由nginx变为了openresty
1 | 启动openresty |
重定向实现
找到openresty配置文件里的:
1 | location / { |
改为:
1 | location / { |
此处去掉了多余的异常检测等内容,详细内容请看lua-nginx-module官方文档
重新加载配置文件
1 | 测试配置文件是否有问题 |
此时访问http://localhost(服务器ip),就会看到
在redis中设置一个key-value
1 | redis-cli -h localhost |
然后请求http://localhost/dwz,就会自动跳转到百度
END
此处只实现了请求nginx后,在nginx层直接通过code(上面的dwz
)在redis中找到跳转地址,然后301重定向到对应网址(也可使用302临时重定向)
短码code生成规则,可以自行选择方法,实现算法可以参考短网址(short URL)系统的原理及其实现
至此,大功告成
未完待续……