openresty 使用cuid 类库生成短连接id

cuid 是一个不错的id 生成算发,类似的有shortid 、hashid
演示使用lua 包集成openresty 做测试

使用docker-compose 运行

dockerfile

FROM openresty/openresty:alpine-fat
RUN apk add --no-cache curl perl
RUN /usr/local/openresty/luajit/bin/luarocks install cuid
EXPOSE 80
COPY nginx.conf usr/local/openresty/nginx/conf/

docker-compose file

version: "3"
services:
   id:
     build: .
     image: dalongrong/cuid-openresty
     ports:
     - "8080:80"

nginx.conf

worker_processes 1;
events {
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    gzip on;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;
    server {
        listen 80;
        server_name localhost;
        charset utf-8;
        location / {
            root html;
            index index.html index.htm;
        }
        location /id {
         default_type text/html;
          content_by_lua_block {
              local cuid = require("cuid")
              local id = cuid.generate ( )
              local slug = cuid.slug ( )
              ngx.say("<div> shortid "..slug.."</div>".."<div>long id"..id.."</div>")
          }
        }
        location /alert {
         default_type text/html;
         content_by_lua_block{
             ngx.say([[<script>alert("error")</script>]])
         }
        }
        location /ip {
            default_type text/html;
            content_by_lua_block{
                ngx.say(ngx.var.remote_addr)
            }
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
}

构建&&运行

  • 构建
docker-compose build
  • 运行
docker-compose up -d
  • 访问
open http://localhost:8080/id
  • 效果

参考资料

https://hub.docker.com/r/openresty/openresty/
https://github.com/rongfengliang/openresty-cuid-demo
https://github.com/marcoonroad/cuid
https://www.npmjs.com/package/cuid

原文地址:https://www.cnblogs.com/rongfengliang/p/9568625.html

时间: 2024-08-30 13:22:49

openresty 使用cuid 类库生成短连接id的相关文章

使用新浪API生成短连接

公司最近需要进行短信推广,需要发送大批量带有连接地址的短信给用户,并且需要统计短信的点击量.因为需要考虑短信成本问题,需要将长连接地址生成比较短的连接.因为公司本身没有短的一级域名,所以考虑到使用第三方的短连接生成器.经过对比选择了新浪短连接生成器. 新浪接口文档地址: http://open.weibo.com/wiki/Short_url/shorten 新浪提供了xml和json两种格式进行生成短连接,这里使用的是json. 下面是请求的代码 public class ShortUrlHe

PHP生成短连接的方法

PHP生成短连接的方法.md 直接贴上方法,函数可以查看手册. <?php /** 生成短网址 * @param String $url 原网址 * @return String */ function dwz($url){ $code=floatval(sprintf('%u', crc32($url))); $surl=''; while($code){ $mod=fmod($code, 62); if($mod>9 && $mod<35){ $mod=chr($mo

PHP实现URL长连接转短连接方法总结

短链接,通俗来说,就是将长的URL 网址,通过程序计算等方式,转换为简短的网址字符串. 这样的话其好处为:1.内容需要:2.用户友好:3.便于管理. 实现短网址(short URL)系统比较流行的算法有两种 自增序列算法. 摘要算法 自增序列算法: 自增序列算法 也叫永不重复算法 设置 id 自增,一个 10进制 id 对应一个 62进制的数值,1对1,也就不会出现重复的情况.这个利用的就是低进制转化为高进制时,字符数会减少的特性. 摘要算法: 1.将长网址 md5 生成 32 位签名串,分为

调用第三方接口生成短链接(三)

新浪微博短链接API 接口文档地址: http://open.weibo.com/wiki/Short_url/shorten. package space; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnectio

openresty && hashids&& redis 生成短链接

1. 原理 a. 从redis 获取需要表示的短链接的id( redis incr) b. hashids 编码 id c. openresty  conteent_by_lua_block 阶段显示数据 2. 安装以来的插件 a. lua hashdis  使用  luarocks 注意需要先安装lua 开发包 b. copy hashids lua 包 到 openresty 的lualib  方便调用 c. redis 安装 luarocks install hashids 3. 代码 n

laravel路由 实现短连接生成及跳转(php 301重定向)

最近懒癌犯了,本来早想做的事拖了1个月.短连接这个之前工作中发送短信是用到过,一般大的网站都会有自己的短连接生成网站,我们公司也有.当然这次我是想在自己的服务器上弄. 短连接原理:将网站地址传到mysql获取自增的id,然后加密成字符串输出到页面.当调用短连接时,后端解密获取实际的url地址,然后header函数做一个重定向跳转(301) 我用了laravel框架,之前学过一点点好久没用了,做点小东西,当做是复习. 路由配置: 1 Route::get('/showindex', functio

PHP 短连接生成

<?php #短连接生成算法 class Short_Url { #字符表 public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; public static function short($url) { $key = "alexis"; $urlhash = md5($key . $url); $len = strlen($urlha

IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动端IM)的数据流交换方式都是Http短连接+TCP或UDP长连接来实现.Http短连接主要用于从服务器读取各种持久化信息:比如用户信息.聊天历史记录.好友列表等等,长连接则是用于实时的聊天消息或指令的接收和发送. 作为IM系统中不可或缺的技术,Http短连的重要性无可替代,但Http作为传统互联网信

[转]HTTP的长连接和短连接

本文原链接:http://www.cnblogs.com/cswuyg/p/3653263.html   本文总结&分享网络编程中涉及的长连接.短连接概念.     关键字:Keep-Alive,并发连接数限制,TCP,HTTP 一.什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待在同域名下继续用这个通道传输数据:相反的就是短连接. HTTP首部的C