openresty

世界上最好的语言搭建短链接及统计功能(附API代码)

匿名 (未验证) 提交于 2019-12-02 22:11:45
在这个营销的时代,短链接和二维码是企业进行营销中非常重要的工具,不仅仅是缩短了链接,而且还可以通过扩展获得更多的数据,诸如点击数、下载量、来源以及时间等等。 网上搜寻了一下比较有名有U.NU和0x3.me,但前者只能统计点击次数,而且不能修改链接,后者功能丰富,但确是收费商业网站。 本安装指南将帮助您安装Polr 2.0的最新版本Polr 2.0。Polr 是一个开源软件、世界上最好的语言,功能还算强大。 修改缩短的域名 统计功能(来源,时间) API支持 二维码生成 Apache, nginx, IIS, or lighttpd (Apache preferred) PHP >= 5.5.9 MariaDB or MySQL >= 5.5, SQLite alternatively composer PHP requirements: OpenSSL PHP Extension PDO PHP Extension PDO MySQL Driver (php5-mysql on Debian & Ubuntu, php5x-pdo_mysql on FreeBSD) Mbstring PHP Extension Tokenizer PHP Extension JSON PHP Extension PHP curl extension PHP http://php.net

openresty+lua灰度发布的简单实验

五迷三道 提交于 2019-12-02 21:37:18
如题,本文是笔者使用openresty 和lua脚本实现的简单灰度发布系统,记录下来。 一、安装 参考openresty 官方网站安装openresty即可 建议参考文章https://www.cnblogs.com/zdz8207/p/Nginx-Lua-OpenResty.html 1.下载软件包 wget https://openresty.org/download/openresty-1.13.6.2.tar.gz 2.解压 tar zxcf openresty-1.13.6.2.tar.gz cd openresty-1.13.6.2/ 进入插件目录cd bundle/ 3.安装LuaJIT cd LuaJIT-2.1-20180420/ make clean && make && make install ln -sf luajit-2.1.0-alpha /usr/local/bin/luajit 4.安装ngx_openresty、(ngx_cache_purge、nginx_upstream_check_module安装参考上面的url) root @user :/usr/servers/ngx_openresty-1.9.7.1/bundle# cd .. root @user :/usr/servers/ngx_openresty-1.9.7.1# .

数据采集之js埋点

匿名 (未验证) 提交于 2019-12-02 20:32:16
一、后台nginx环境搭建  web点数据采集后台配置nginx: https://blog.csdn.net/weixin_37490221/article/details/80894827 下载数据源: wget -O lua-nginx-module-0.10.0.tar.gz https://github.com/openresty/lua-nginx-module/archive/v0.10.0.tar.gz wget --no-check-certificate -Oecho-nginx-module-0.58.tar.gz 'https://github.com/openresty/echo-nginx-module/archive/v0.58.tar.gz' wget --no-check-certificate -O nginx_devel_kit-0.2.19.tar.gz https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz wget https://openresty.org/download/openresty-1.9.7.3.tar.gz wget --no-check-certificate -Oset-misc-nginx-module-0.29.tar.gz 'https:/

openresty 火焰图收集

北慕城南 提交于 2019-12-02 18:28:01
工具安装 查看内核及kernel 注:本次安装以下都是基于centos6的 uname -a ; rpm -qa kernel\* | sort kernel,kernel-devel,kernel-debuginfo,kernel-debuginfo-common(先安装kernel-debuginfo-common,在安装 kernel-debuginfo) 这些版本一定要和内核版本保持一致 相关rpm包下载: http://rpm.pbone.net (kernel,kernel-devel), http://debuginfo.centos.org (kernel-debuginfo,kernel-debuginfo-common)对应搜索下载rpm安装,版本一定要对应,不然会报一些内核错。 安装systemtap yum install systemtap 测试安装是否成功: stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}' 安装成功: 出现下面的情况,是kernel-devel不匹配导致的 kernel-debug 版本不匹配 下载stapxx、FlameGraph、openresty-systemtap-toolkit https://github.com/openresty

基于OpenResty与Consul实现服务网格ServiceMesh

若如初见. 提交于 2019-12-01 18:57:05
一、逻辑架构 1 、基于 OpenResty 开发智能代理, 利用其动态可编程特性,动态化配置 nginx 服务路由。 2 、可能需要向 OpenResty 添加 weibo 开源的 upsync 服务发现模块。 3 、基于 consul 建设微服务注册中心集群。 4 、服务网格中的每个 node包括至少一个智能代理,若干个微服务, 各个 node 和注册中心一起构成一个服务网格 。 5 、每个微服务启动时需向注册中心上报自身服务信息,包括 ip, 端口,服务名等。 6 、智能代理根据自身的配置和需求从注册中心 pull 相应的动态服务列表信息,并在本地落地做兜底,防止注册中心不可用的情况。 7 、至此,对于每个微服务: ( 1 )对外访问可通过要访问的服务名由智能代理提供 upstream 动态负载均衡访问。 ( 2 )对外提供服务则只需在启动时调用 rest API 向注册中心集群提供自身服务信息即可。 二、组件功能需求 1、 智能 proxy (1) 配置并存放服务注册中心 URL 、配置本 node 需要的外部服务 list 。 (2) 负责发送(转发)本 node 上各个 service 的服务注册请求到服务注册中心。 (3) 根据外部服务 list 到服务注册中心动态获取服务详细信息,通过 openresty 内嵌 lua 脚本动态生成本地配置 location 、

使用Nginx+Lua进行Web开发

两盒软妹~` 提交于 2019-12-01 13:32:47
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行,一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。两者的结合可以开发出高性能的Web应用。 Openresty就把nginx和lua结合在了一起,OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。 OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。 OpenResty 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求

OpenResty(nginx扩展)实现防cc攻击

孤人 提交于 2019-12-01 13:32:37
OpenResty(nginx扩展)实现防cc攻击 作者: 朱 茂海 /分类: Nginx , 服务器安全 /Tag: OpenResty 文章目录 [ 隐藏 ] 一、安装依赖 二、luajit安装 三、openresty安装 四、nginx配置 防cc攻击,推荐使用 HttpGuard 本文介绍使用 openresty 来实现防cc攻击的功能。openresty官网 http://openresty.org/cn/index.html 。下面是防cc攻击的流程图。 根据流程图,我们知道防cc攻击主要包括两部分,一是限制请求速度,二是给用户发送js跳转代码进行验证请求是否合法。 一、安装依赖 centos: yum install readline-devel pcre-devel openssl-devel ubuntu : apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl 二、luajit安装 cd /tmp/ git clone http://luajit.org/git/luajit-2.0.git cd luajit-2.0/ make && make install ln -sf luajit-2.0.0-beta10 /usr/local/bin/luajit ln

openresty 灰度发布

旧巷老猫 提交于 2019-12-01 10:08:36
公司业务需求 需要在新功能上线前给一部分用户作测试 网上查到 可以使用openresty 较为快速且侵入较小的实现 过程为不同用户浏览网站时, nginx获取到userId, 根据预先指定的userId转发至对应的服务器 在不重启nginx的情况下 可以动态指定服务地址给对应userId 做到动态添加灰度服务 lua/redirect_by_user.lua local _UTIL = {} -- 获取请求当中的 userId function _UTIL.get_user_by_req() -- header local headers = ngx.req.get_headers() local header_user_id = headers["userId"] if header_user_id ~=nil then return header_user_id end local req_method = ngx.var.request_method -- get if req_method == "GET" then local args = ngx.req.get_uri_args() return args["userId"] end -- post if req_method == "POST" then -- 区分content-type local receive

中国顶级程序员图鉴

試著忘記壹切 提交于 2019-12-01 07:42:38
程序员圈子里有很多如明星般闪耀的牛人! 有中国第一代程序员求伯君 有获得图灵奖的姚期智 有产品取得巨大成功的张小龙 商业巨子张一鸣 影响开源领域的章亦春...... 他们的最初都是程序员 机遇与热爱,把他们送到了不同的方向 在这里,我们分两篇为大家展示 本篇:技术领域有着巨大影响力的程序员 第二篇: 《商业领域有着巨大影响力的程序员》 在技术领域 有的人,凭一己之力 开发出了几千人使用的开源软件 有的创造了网络的神话,至今为传诵 有的授业解惑,或教室、或出书、或博客 他们影响了一批又一批的后来者 他们的名字经常被提起 这是一群对技术有着最纯真热爱的人 (小编补充声明:下面排序并不按个人成就,如果你喜欢的大牛排在后面了,别纠结别激动!!!) 非科班出身的大牛: 01.阿里-蔡景现 蔡景现,一个更广为人知的名字是--“多隆”。 他是阿里巴巴初创团队三名工程师之一, 在一个月之内,从零起步搭建起了“淘宝” 。 非科班出身的他被称“码神”,又称“阿里扫地僧“。 个人历程: 1976年,出生于浙江苍南一个农民家庭; 2000年,从杭州大学生物系硕士毕业,加入阿里; 2014年,成为阿里合伙人; 2017年,41的他以26亿身家登上胡润财富榜。 技术成就: 对于技术,既懂C/C++,又懂Java内核; 既可以深入技术底层,又能切入到高层业务领域, 从前端到后端,独自维护淘宝搜索引擎长达5年。

用redis实现openresty的缓存同步

佐手、 提交于 2019-12-01 02:36:13
引 "一切单机缓存都是魔鬼,与其被消灭,不如与其共舞" 来由 之前接到我们uAuth的一个bug,具体原因为,当一个用户改密后,原token理应失效,但是线上时常会有原token访问的正常的情况。 可是在测试环境上,确无论如何也复现不出来。 后来仔细分析了源码,是由于token的存储用了openresty的缓存,当token失效后,只在线上的n台服务器中的一台做了失效处理,而其他的n-1台的缓存仍然有效。 思路 缓存不一致 ———— 这确实是好多场景容易碰到的问题,那么怎么办?解决方式有二: 干掉openresty的缓存,将存储设计由openresty缓存/redis/mysql 改为redis/mysql 两层结构。 设计openresty的缓存同步机制,从根儿上解决这个问题。 方式1,确实是简单直接有效的方式,but: 使用openresty,不让我用缓存,那和一条咸鱼有什么区别? 于是,我选择了第2种方式,那么问题来了,如何设计这个同步机制 ? 经典的同步肯定是发布/订阅来搞定,第一时间自然想到了kafka,可是查了一圈发现openresty中官方的resty.kafka只支持生产,并且大多数场景都是用来日志记录。到时redis,有一个经典的subscribe例子,那么好,就这么干。 撸码 封装发布/订阅操作 既然同步,那咱就整到位。 第一步,封装一个redis