# 短网址生成 **Repository Path**: tea-man/short-url ## Basic Information - **Project Name**: 短网址生成 - **Description**: 本系统是一个基于 openresty 的 Lua模块 和 Redis模块 开发的简单、快速的短网址系统。 - **Primary Language**: Lua - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2021-06-11 - **Last Updated**: 2025-12-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 短网址系统 ## 功能简介: - 将任意长度(<=2048 )的网址转换成固定长度(通过配置设置)的短网址 - 短网址“增长”由配置来指定,实现非常规顺序增长 - 短网址可设定过期的时间(单位为分钟),过期后将自动删除相应数据 ### 使用示例: - ”get?“ 后必须是以 ”http | https | ftp://“ 为前缀 ``` http://192.168.1.30/get?https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%8D%93%E5%8D%9A%E4%BA%BA%E6%89%8D%E7%BD%91&fenlei=256&rsv_pq=af976bb200010e43&rsv_t=b6f0X14Ts7bqrvgksNqyi1IZEsb8QobfJyxsgPst8%2FePDFxCLOo8GxPiFZs&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=32&rsv_sug1=33&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&inputT=11761&rsv_sug4=11761 ``` - 设定过期时间(分钟)的用法:在 url 后面加 "&exp_time=xx" [ 接受小数 ] - 对已经存在的 url 后面加 "&exp_time=xx" ,将重置过期时间,用此方法也可以实现 “用延时的方式删除url” ``` http://192.168.1.30/get?https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%8D%93%E5%8D%9A%E4%BA%BA%E6%89%8D%E7%BD%91&fenlei=256&rsv_pq=af976bb200010e43&rsv_t=b6f0X14Ts7bqrvgksNqyi1IZEsb8QobfJyxsgPst8%2FePDFxCLOo8GxPiFZs&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=32&rsv_sug1=33&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&inputT=11761&rsv_sug4=11761&exp_time=60 ``` ### 测试 - 生成 ``` http://192.168.1.30/get?https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%8D%93%E5%8D%9A%E4%BA%BA%E6%89%8D%E7%BD%91&fenlei=256&rsv_pq=af976bb200010e43&rsv_t=b6f0X14Ts7bqrvgksNqyi1IZEsb8QobfJyxsgPst8%2FePDFxCLOo8GxPiFZs&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=32&rsv_sug1=33&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&inputT=11761&rsv_sug4=11761 ``` - 删除 ``` http://192.168.1.30/del?https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%8D%93%E5%8D%9A%E4%BA%BA%E6%89%8D%E7%BD%91&fenlei=256&rsv_pq=af976bb200010e43&rsv_t=b6f0X14Ts7bqrvgksNqyi1IZEsb8QobfJyxsgPst8%2FePDFxCLOo8GxPiFZs&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=32&rsv_sug1=33&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&inputT=11761&rsv_sug4=11761 ``` ## 详细说明 ### gitee 库地址: https://gitee.com/tea-man/short-url ## 简单的 URL 短网址系统 ## 本系统是一个基于 openresty 的 Lua模块 和 Redis模块 开发的简单、快速的短网址系统,它能够对提交的网址就行编码,缩短到指定长度的网址。 1. 使用Nginx+lua+redis,性能非常高; 2. 具有域名黑名单、白名单,支持简单认证; 3. 支持自定义短URL长度; 4. 支持自定义短网址字符前缀、后缀 5. 使用json方式返回数据 6. 可设定过期时间 ## 安装方法 ## 1. 编译安装openresty,要启用lua模块。[http://openresty.org/](http://openresty.org/ "Openresty") 2. 安装并配置redis软件 3. 下载源文件,lualib(默认/usr/local/openresty/lualib)目录中新建v5j目录,将lua代码文件放置于目录中 [root@localhost ~]# ll /usr/local/openresty/lualib/v5j config.lua functions.lua index.lua get.lua 4. 配置nginx.conf(文件默认位置/usr/local/openresty/nginx/conf/nginx.conf) server { .... location / { lua_socket_keepalive_timeout 30s; content_by_lua_file /usr/local/openresty/lualib/short-url/index.lua; } location /get { lua_socket_keepalive_timeout 30s; content_by_lua_file /usr/local/openresty/lualib/short-url/get.lua; } location /del { lua_socket_keepalive_timeout 30s; content_by_lua_file /usr/local/openresty/lualib/short-url/del.lua; } ... } 5. 配置 ... -- 配置Redis数据库信息 local redis = {} redis['host'] = '127.0.0.1' redis['port'] = 6379 redis['password'] = 'passwd' -- 设置起始的短网址,根据长度可以选择需要多少数量的短网址 -- 1 -> 62 -- 2 -> 3844 -- 3 -> 238328 -- 4 -> 14776336 -- 5 -> 916132832 -- 6 -> 56800235584 -- 7 -> 3521614606208 -- 8 -> 218340105584896 -- 9 -> 13537086546263552 -- 10 -> 839299365868340224 -- 11 -> 52036560683837093888 -- 12 -> 3226266762397899821056 -- 13 -> 200028539268669788905472 -- 14 -> 12401769434657526912139264 -- 15 -> 768909704948766668552634368 -- 16 -> 47672401706823533450263330816 * 注意:已经在使用中的话,就不能再修改 start_url、prefix、suffix 参数了 local start_url = {'0','0','0','0'} -- 短网址前缀 local prefix = '11' -- 短网址后缀 local suffix = '22' -- 短网址的域名 local domain = 'http://192.168.1.30/' -- 接受网址缩短的白名单和黑名单,白名单优先级高于黑名单; -- 黑名单中默认包含短网址的域名 local white_host = {'domain.com','domain2.com'} local black_host = {'black.com'} ...... 5. 启动nginx服务 ## 注意事项 ## 1. host白名单优先级高于黑名单,设置了白名单将只能对白名单的host网址进行网址缩短 ## 一些问题 ## 1. 如何处理带”#“的网址 ? 在目前的应用需求来说,不需要处理 ## 进阶计划相关 ## https://luarocks.org/ # 感谢 ! - 本系统在 peanode/simple-url-shorten 的系统下进行按自身需求修改 https://github.com/peanode/simple-url-shorten