Nginx+Openresty
文章平均质量分 88
Nginx+Openresty
秃了也弱了。
即使没有万全准备,也要勇敢迈出第一步。无论远方的风雨有多大、路有多难走。风里雨里陪伴你们,赠人玫瑰,手有余香。在技术领域,我会一如既往的坚持下去。
展开
-
OpenResty使用Lua笔记
不加 local 的变量会在全局表中查找,这是昂贵的操作。如果再加上一些变量名的拼写错误,就会造成难以定位的 bug。可以把 s 这个包含函数的字符串,改成可以由用户指定的形式,并加上执行它的条件,这样其实就是 FaaS 的原型了。ngx.var 是一个性能损耗比较大的操作,在实际使用时,我们需要用 ngx.ctx 来做一层缓存。在 Lua 中,变量默认是全局的,会被放到名为。(1)Lua 的下标从 1 开始。原创 2024-07-16 10:29:36 · 377 阅读 · 0 评论 -
Openerstry + lua + redis根据请求参数实现动态路由转发
甚至还要考虑不同的 return 情况做不同处理,就很快发现代码中有大量的重复。在关于web+lua+openresty开发中,项目中会大量操作redis,重复创建连接–>数据操作–>关闭连接(或放到连接池)这个完整的链路调用完毕,根据用户访问url的参数,将请求转发到对应指定IP的服务器上。至此,实现了根据请求参数进行动态路由转发。安装openresty+redis,略。推荐一个二次封装的类库。原创 2024-07-12 08:32:01 · 583 阅读 · 0 评论 -
OpenResty使用Lua大全(九)实战:nginx-lua-redis实现访问频率控制
set_by_lua,rewrite_by_lua,access_by_lua,content_by_lua等方法。我们用redis的key表示用户,value表示用户的请求频次,再利用过期时间实现单位时间;在高并发场景下为了防止某个访问ip访问的频率过高,有时候会需要控制用户的访问频次。现在我们要求10秒内只能访问10次frequency请求,超过返回403。这个配置,放在server部分,让所有的location 适用就行了。当然这只是简单的限流小实验,使用开源网关可以实现更复杂的限流。原创 2024-03-19 08:23:38 · 973 阅读 · 0 评论 -
OpenResty使用Lua大全(十一)实战: nginx实现接口签名安全认证
我们会发现,如果我获取了你完整的链接,一直使用你的key和sign和一样的参数不就可以正常获取数据了!是的,仅仅是如上的优化是不够的。如上,优化后的请求多了key和sign参数,这样请求的时候就需要合法的key和正确签名sign才可以获取产品数据。通过上面的案例,我们可以看出,安全的关键在于参与签名的secret,整个过程中secret是不参与通信的,上述的Sign签名的方式能够在一定程度上防止信息被篡改和伪造,保障通信的安全,这里使用的是MD5进行加密,这样就算被人拿走完整的请求链接也是无效的。原创 2024-03-20 08:36:58 · 1178 阅读 · 0 评论 -
Nginx部署前端网页,Nginx搭建静态资源服务器
在docs目录下,是一个完整的html静态页面,接下来我们用nginx将其部署。配置完毕之后,执行nginx -s reload,将nginx配置重新加载。但是,根目录如果有index.html的话,会默认打开index.html。访问192.168.56.10 ,默认会找到index.html首页。下载地址:http://dlib.net/下载完成之后上传至linux服务器。原创 2023-10-12 00:30:00 · 924 阅读 · 0 评论 -
OpenResty使用Lua大全(三)OpenResty使用Json模块解析json
引入cjson.safe 模块接口,该接口兼容 cjson 模块,并且在解析错误时不抛出异常,而是返回 nil。这个是因为对于 Lua 本身,是把数组和哈希键值对融合到一起了,所以他是无法区分空数组和空字典的。web开发过程中,经常用的数据结构为json,openresty中封装了json模块。pcall 接收一个函数和要传递给后者的参数,并执行,执行结果:有错误、无错误;2)table所有键为数组型键值对时,会当作数组看待,空位将转化为null。执行效果,没有系统错误,返回了nil。原创 2024-03-14 08:26:12 · 1501 阅读 · 0 评论 -
nginx安装与配置详解
目录一、安装Nginx:二、使用Nginx:简单与单台Tomcat整合三、详细使用(nginx就是去配置其文件而已),如下所示:一、安装Nginx:1 : wget下载: http://nginx.org/download/nginx-1.4.2.tar.gz2 : 进行安装: tar -zxvf nginx-1.6.2.tar.gz3 : 下载锁需要的依赖库文件: yum install pcre yum install pcre-dev...原创 2021-02-18 09:15:21 · 6051 阅读 · 12 评论 -
OpenResty使用Lua大全(八)OpenResty执行流程与阶段详解
之前也介绍过。语境:http阶段:loading-config当nginx master进程在加载nginx配置文件时运行指定的lua脚本,语境:http阶段:starting-worker在每个nginx worker进程启动时调用指定的lua代码。用于启动一些定时任务,比如心跳检查,定时拉取服务器配置等等;此处的任务是跟Worker进程数量有关系的,比如有2个Worker进程那么就会启动两个完全一样的定时任务。原创 2024-03-18 08:43:38 · 4025 阅读 · 0 评论 -
OpenResty使用Lua大全(十)实战: Lua + Redis 实现动态封禁 IP
为了方便管理和共享,我们通过 Nginx+Lua+Redis 的架构实现 IP 黑名单的功能。为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单。在http部分,配置本地缓存,来缓存redis中的数据,避免每次都请求redis。1、在操作系统层面,配置 iptables,拒绝指定 IP 的网络请求;3、在应用层面,在请求服务之前检查一遍客户端 IP 是否在黑名单。对于黑名单之内的 IP ,拒绝提供服务。原创 2024-03-19 08:24:17 · 667 阅读 · 0 评论 -
OpenResty使用Lua大全(四)OpenResty中使用Redis
redis的连接是tcp连接,建立TCP连接需要三次握手,而释放TCP连接需要四次握手,而这些往返时延仅需要一次,但A,B业务共用了连接池,很有可能 B业务拿到的 A业务使用的连接,而此连接操作的数据库db1;如果当前连接不是从内建连接池中获取的,该方法总是返回 0 ,也就是说,该连接还没有被使用过。注意:我们如何知道,redis连接对象是从连接池中获取的,还是新创建的连接呢?以后应该复用TCP连接,此时就可以考虑使用连接池,即连接池可以复用连接。1、连接池是每Worker进程的,而不是每Server的;原创 2024-03-14 08:26:53 · 1798 阅读 · 0 评论 -
OpenResty编译安装详解
OpenResty® 是一个基于Nginx 与 Lua的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。原创 2023-10-06 17:16:17 · 1226 阅读 · 0 评论 -
Nginx+keepalived从入门到集群搭建(手把手教学,建议收藏)
目录一、什么是Nginx二、Nginx的相关概念1.正向代理2.反向代理3.负载均衡4.动静分离三、Nginx安装1.安装2.其他配置3.windows中nginx安装四、Nginx常用命令1.查看 nginx 版本号2.启动3.关闭4. 重新加载命令五、Nginx的配置文件1.配置文件位置2.分析nginx.conf配置文件六、Nginx配置-反向代理11.实现效果:2.tomcat启动3.nginx配置4....原创 2021-09-30 16:00:29 · 7411 阅读 · 0 评论 -
OpenResty使用Lua大全(七)OpenResty使用全局缓存
Nginx是一个Master进程多个Worker进程的工作方式,因此我们可能需要在多个Worker进程中共享数据。使用来实现全局内存共享。原创 2024-03-18 08:43:03 · 1226 阅读 · 0 评论 -
OpenResty使用Lua大全(一)Lua语法入门实战
一)lua介绍1993 年在巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro in Brazil)诞生了一门编程语言,发明者是该校的三位研究人员,他们给这门语言取了个浪漫的名字——Lua,在葡萄牙语里代表美丽的月亮。事实证明她没有糟蹋这个优美的单词,Lua 语言正如它名字所预示的那样成长为一门简洁、优雅且富有乐趣的语言。原创 2024-03-13 08:20:53 · 2024 阅读 · 0 评论 -
Nginx手动编译、安装超超详解
但是直接安装Nginx二进制文件有一个问题:Nginx二进制文件会把模块直接编译进来,Nginx官方模块并不是每一个都会默认开启,如果想要添加第三方Nginx模块,必须通过编译Nginx才能把第三方强大生态圈中的功能添加到Nginx中。Nginx安装除了编译以外,我们还可以直接用操作系统上自带的工具比如说yum、apt-get直接安装。其中,ngx_modules.c文件中,决定了我们在执行编译时,哪些模块会编译进nginx。我们复制链接地址,到linux服务器中。打开默认的index页面!原创 2023-09-28 08:43:11 · 669 阅读 · 0 评论 -
OpenResty使用Lua大全(五)OpenResty中使用MySQL
客户端目前还没有提供预编译SQL支持(即占位符替换位置变量),我们编写个案例,操作mysql数据库,编辑test.lua。默认安装OpenResty时已经自带了mysql模块。连接池和之前Redis客户端完全一样。进行字符串转义,防止sql注入;这样在入参时记得使用。原创 2024-03-15 08:40:21 · 1036 阅读 · 0 评论 -
nginx从入门、搭建到理解
目录前言一、nginx简介1. 什么是 nginx 和可以做什么事情2.Nginx 作为 web 服务器3. 正向代理4. 反向代理5. 负载均衡6.动静分离二、Nginx 的安装(Linux:centos为例)1. 准备工作2. 开始安装3. 运行nginx4. 防火墙问题三、 Nginx 的常用命令和配置文件1. Nginx常用命令a. 使用nginx操作命令前提b. 查看 nginx 的版本号c. 启动 nginxd. .转载 2021-02-18 08:58:58 · 6410 阅读 · 1 评论 -
OpenResty使用Lua大全(六)OpenResty发送http请求
ngx.location.capture 方法就是发起http的请求,但是它只能请求 内部服务,不能直接请求外部服务。编辑nginx.conf配置文件,配置一下路由,定义有个两个服务请求 商品服务请求和订单服务请求。可很多时候我们会要求商品请求 是不对外暴露的,也就是用户无法直接访问商品服务请求。刚才我们请求外部请求,是写死了q=iphone,那我们用capture传参。不能直接发起外部请求,我们需要通过内部请求中用反向代理请求发起外部请求。—>这种数据截断的原因只可能是因为子请求发生了不可恢复的错误,原创 2024-03-15 08:40:53 · 2308 阅读 · 0 评论 -
OpenResty使用Lua大全(十二)实战: 动手实现一个网关框架
统一入口;安全:黑名单、权限身份认证;限流:实现微服务访问流量计算,基于流量计算分析进行限流,可以定义多种限流规则;缓存:数据缓存;日志:记录日志;监控:记录请求响应数据,api耗时分析,性能监控;重试:异常重试;熔断:降级。安装依赖1)OpenResty: 版本应在1.9.7.3+需要编译OpenResty时添加2)lor框架3)MySQL数据库名:orange安装mysql数据库执行相应的版本的数据库脚本。原创 2024-03-20 08:37:41 · 1474 阅读 · 0 评论 -
OpenResty使用Lua大全(二)在OpenResty中使用Lua
ngx.var.arg_strider的值为”1”,而ngx.req.get_uri_args[“strider”]的值为table [“1”, “2”, “3”, “4”]。重写阶段、访问限制阶段、内容处理阶段,这几个阶段都是独立的,就像Servlet也有不同的生命周期,不同的阶段处理不同的相关的业务。ngx.var.arg_xx与ngx.req.get_uri_args[“xx”]两者都是为了获取请求uri中的参数。对于应用开发,一般使用 ngx.INFO 到 ngx.CRIT 就够了。原创 2024-03-13 08:21:42 · 2794 阅读 · 0 评论