openresty
六指黑侠i
能敲一行,不敲两行
展开
-
基于OpenResty上传限速的实现
问题背景一般而言,OpenResty做的都是反向代理的工作,负责流量治理类的工作。很常见的限速一般都是下载限速Nginx也提供了类似的指令:limit_rate。但是说巧不巧,业务方昨天提到了由网关来做针对客户端的上传文件时的限速功能,这就很曹丹了,一般都是为了用户体验度,都是提高上传的速度还有主动限制上传速度的;反正不管了,现将功能集成进去再说。 解决方案但是问题来了,TMD,怎么做呢?OpenResty并没有提供类似的API来做这件事,唯一看到的一个Nginx的第三方模块:li...原创 2020-08-11 22:57:26 · 1351 阅读 · 6 评论 -
OpenResty的一些好文章
OpenResty的特性:https://segmentfault.com/a/1190000019266136原创 2020-08-11 22:19:10 · 110 阅读 · 0 评论 -
OpenResty学习笔记
简介OpenResty是一个基于Nginx+Lua的Web运行环境,它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项。OpenResty可以用来实现高并发的动态Web应用Open 取自“开放”之意,而Resty便是 REST 风格的意思OpenResty使用的Lua版本是5.1,不使用更新版本的原因是5.2+版本的Lua API和C API都不兼容于5.1。自从 OpenResty 1.5.8.1 版本之后,默认捆绑的 Lua 解释器就被替换成了 LuaJIT转载 2020-08-11 22:15:24 · 1064 阅读 · 0 评论 -
OpenResty 上游响应过大处理方案
问题描述当上游服务经过网关代理后出现响应体被截断的状况,导致调用方解析响应体失败!问题分析 2020/05/30 13:16:28 [crit] 1879#0: *10035158 mkdir() "/usr/local/nginx/proxy_temp/0/91" failed (13: Permission denied) while reading upstream, client: 10.25,78.146, server: localhost, request: "GET /原创 2020-08-11 21:45:28 · 464 阅读 · 0 评论 -
OpenResty 动态SNI
应用场景SNI主要解决一台服务器只能使用一个证书(一个域名)的缺点,随着服务器对虚拟主机的支持,一个服务器上可以为多个域名提供服务,因此SNI必须得到支持才能满足需求。解决方案OpenResty 基于 Nginx 对 HTTPS 提供了非常好的支持,但要求 OpenSSL 的版本不能低于 1.0.2e。Nginx配置在 OpenResty 里搭建 HTTPS 服务需要使用三个核心指令,指定服务器的监听端口、证书和秘钥:指令 描述 listen 监听端口,必须使用附加.原创 2020-08-11 21:43:04 · 804 阅读 · 0 评论 -
OpenResty上游响应超时
问题描述当使用网关代理上游服务时会出现调用方一直在等待网关的响应,最后出现上图的情况。问题分析流程分析步骤号 描述 A client端发起请求给gateway。 B gateway处理后,将请求转发到server,并等待结果。 C gateway处理完请求后,返回数据给gateway。 D gateway将处理结果返回给客户端 每个阶段都会有一个预设的超时时间,由于网络、机器负载、代码异常等等各种原因,如果某个阶段没有在预期...原创 2020-08-11 21:39:17 · 1986 阅读 · 0 评论 -
nginx 优秀的第三方模块
地址:https://www.nginx.com/resources/wiki/modules/原创 2020-08-03 19:11:04 · 613 阅读 · 0 评论 -
Nginx信号
一、Nginx信号机制说明nginx是通过master进程和worker进程提供服务的。master进程主要用来监控worker进程工作状态进行相应重 启、停止等操作。worker进程则进行具体提供服务,接受请求和处理请求。那么既然提到master监听worker进程,就势必用到进 程间通信。常见的进程 间通信也无非那几种方式,内存,消息队列,socket,信号等。在nginx中是采用了共 享内存,socket与信号三种方式。在master和w...转载 2020-08-03 19:08:46 · 743 阅读 · 0 评论 -
OpenResty 命令详解
命令(1): openresty-h | -?含义:查看OpenResty的帮助,可以得知当前的版本号以及全部指令的使用方式。示例:[root@localhost ~]# openresty -hnginx version: openresty/1.15.8.2Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]Options: -?,-h : this help.原创 2020-08-03 17:59:00 · 5689 阅读 · 0 评论 -
OpenResty 火焰图工具
什么是火焰图?火焰图和直方图、曲线图一样,是一种分析数据的方式,它可以更直观、更形象地展示数据,让人很容易发现数据中的隐藏信息。之所以叫火焰图,是因为这种图很像一簇火焰。火焰图展现的一般是从进程(或线程)的堆栈中采集来的数据,即函数之间的调用关系。从堆栈中采集数据有很多方式,下面是几种常见的采集工具:Performance Event SystemTap DTrace OProfile Gprof数据采集到了,怎么分析它呢?为此,Brendan Gregg开发了专门把采样到的堆栈轨迹(原创 2020-07-21 16:50:23 · 905 阅读 · 0 评论 -
OpenResty 获取当前毫秒数时间戳
从 nginx 的时间缓存(不像 Lua 的日期库,该时间不涉及系统调用)返回当前的日期(格式: yyyy-mm-dd )。原创 2020-07-21 16:21:45 · 3075 阅读 · 0 评论 -
修改nginx access.log 日志的格式
默认格式:引用:access_log 日志路径 main json格式:引用:access_log 日志路径 log_json结果:原创 2019-01-31 13:57:03 · 1322 阅读 · 0 评论 -
attempt to yield across C-call boundary 错误解决
原因分析:这是LuaJIT(和标准Lua5.1解释器)中已知的限制,即Required()内置器目前是作为C内建器实现的,您无法通过该C内置器启动产量。问题解决:第一步:下载require.lua(以为大家准备妥当)链接地址:https://pan.baidu.com/s/1IoRKpeIrUKWco6oascIotg提取码:jwn8第二步:解压压缩包放置到...原创 2019-02-12 15:45:13 · 2733 阅读 · 0 评论 -
nginx内置变量
变量名 定义$arg_PARAMETER GET请求中变量名PARAMETER参数的值。$args 这个变量等于GET请求中的参数。例如,foo=123&bar=blahblah;这个变量只可以被修改$binary_remote_addr 二进制码形式的客户端地址。$body_bytes_sent 传送页面的字节数$content_length...转载 2019-03-12 13:27:42 · 119 阅读 · 0 评论 -
如何自签发证书,并利用根证书进行公私钥发布
1、将openssl.cnf配置文件拷贝到当前目录下并创建以下在配置文件中指定的子文件夹mkdir demoCAcd demoCAindex.txt为空,serial必须写入内容,且为字符串格式的数字(比如1000)mkdir srl certs newcertstouch index.txt serialecho 1000 > serialcd ..sudo...转载 2019-03-24 21:42:53 · 2265 阅读 · 0 评论 -
火焰图
火焰图介绍看到openresty里用火焰图觉得挺有意思的,又装逼又有用。它可以快速的定位到程序性能的瓶颈,生成程序的调用栈并且计算调用栈中每部分的CPU消耗,能够比较容易的找到CPU占用高、内存泄漏等问题。今天在自己以前的项目中测试了下,下面贴个图留个纪念。这里面不要看颜色,因为颜色是随机搞来的,没有任何意义。要看火焰山上纵向的高度和每个对应的长度。纵向的高度代表函数调用栈的深度,横向...转载 2019-03-24 21:45:46 · 544 阅读 · 0 评论