openresty mysql 性能_OpenResty一些重要特性的整理

OpenResty (简称OR) 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的Lua Api,第三方模块以及常用的依赖项,基于这些能力,我们可以利用OR快速方便的搭建能够处理超高并发的,极具动态性和扩展的Web应用、Web服务和动态网关。

这篇文章选择OR中具有重要意义的一些模块、命令、Api和框架介绍如下:

基础的Http处理

OR 作为一款 Web 服务器,提供了如:

ngx.print() | ngx.say()

ngx.req.get_headers()

ngx.resp.get_headers()

ngx.header.HEADER

ngx.exit()

等函数和方法控制http请求的输入和输出,我们可以通过这些 api 灵活的控制 Web Server 中包括输入输出,转发到上游或者发起子请求在内的各个环节。

ngx.print

同ngx.say(), 通过该 api 可以指定返回的请求的消息体,其中每一次函数的调用,都是在nginx的输出链上增加了一个结点,所以我们可以多次调用该函数而不用担心后者会覆盖前者,如:

location =/hello {

content_by_lua_block {

ngx.print("Hello")

ngx.print(" ")

ngx.print("World!")

}

}

GET /hello 将会得到如下结果

======

Hello World!

请求头和响应头控制

ngx.exit() 和 ngx.status

ngx.exit,通过该 api可以指定请求响应体的 http status, 如:

location =/error {

content_by_lua_block {

return ngx.exit(500)

}

}

GET /error

======

500 Internal Server Error

500 Internal Server Error


openresty

当我们访问 /error 接口的时候,可以得到一个默认的 500 页面,如上所示,当然我们可以通过ngx.status + ngx.print 的组合方式得到自定义的错误页面,如:

location =/error {

content_by_lua_block {

ngx.status = 500

ngx.print("error here!")

return ngx.exit(500)

}

}

GET /erro

======

error here!

以上方式同样适用于其它错误,如 404、502、503 等页面,通过这样的方式我们可以更灵活的控制当这些错误,从而返回更友好的页面或者其它输出,当然你也可用使用 nginx 原生的 error_page 指令对错误页面进行控制,只是灵活性相对差一些

ngx.timer.at

在OR内部通过 nginx 事件机制实现的定时器,我们可以通过它来实现延迟运行的任务逻辑,甚至于通过一些特

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值