高性能web平台openrestry简介

概述

OpenResty® 是一个基于 [Nginx](http://openresty.org/cn/nginx.html) 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

OpenResty® 通过汇聚各种设计精良的 [Nginx](http://openresty.org/cn/nginx.html) 模块(主要由 OpenResty 团队自主开发),从而将 [Nginx](http://openresty.org/cn/nginx.html) 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 [Nginx](http://openresty.org/cn/nginx.html) 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

OpenResty® 的目标是让你的Web服务直接跑在 [Nginx](http://openresty.org/cn/nginx.html) 服务内部,充分利用 [Nginx](http://openresty.org/cn/nginx.html)的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

OpenResty 简单理解,就相当于封装了nginx,并且集成了LUA脚本,开发人员只需要简单的其提供了模块就可以实现相关的逻辑,而不再像之前,还需要在nginx中自己编写lua的脚本,再进行调用了。

安装

**linux安装openresty:**

1、添加仓库执行命令
    yum install yum-utils
    yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

2、执行安装
    yum install openresty

3、安装成功后 会在默认的目录如下:
    /usr/local/openresty

4、启动openresty
    cd     /usr/local/openresty/nginx/sbin
    ./nginx

入门程序

配置openresty的nginx配置文件`conf/nginx.conf`。在http模块下添加一个server配置

```lua
 server {
        listen 8080;
        location / {
            default_type text/html;
            content_by_lua_block {
                ngx.say("<p>hello, world</p>")
        }
    }
}

重启openrestry
    cd     /usr/local/openresty/nginx/sbin
    ./nginx -s reload

输入如下地址,进行访问 http://192.168.200.128:8080  浏览器输出 `hello, world`

 openrestry中的常用Lua API介绍

和一般的Web Server类似,我们需要接收请求、处理并输出响应。而对于请求我们需要获取如请求参数、请求头、Body体等信息;而对于处理就是调用相应的Lua代码即可;输出响应需要进行响应状态码、响应头和响应
内容体的输出。因此我们从如上几个点出发即可

### 接收请求

获取nginx变量:`ngx.var`

```lua
 server {
        listen 8080;
        location / {
            #定义nginx变量    
            set $b $host;
            
            default_type text/html;
            content_by_lua_block {
                local var = ngx.var; -- 获取nginx变量
                ngx.say("ngx.var.b : ", var.b, "<br/>")
                ngx.var.b = 2; -- 设置变量值
                ngx.say("ngx.var.b : ", var.b, "<br/>")
                ngx.say("<br/>")
            }
        }
    }
```

获取请求头:`ngx.req.get_headers()`

```lua
server {
        listen 8080;
        location / {
            #定义nginx变量    
            set $b $host;
            
            default_type text/html;
            content_by_lua_block {
                local headers = ngx.req.get_headers()
                ngx.say("headers begin", "<br/>")
                ngx.say("Host : ", headers["Host"], "<br/>")
                ngx.say("user-agent : ", headers["user-agent"], "<br/>")
                ngx.say("user-agent : ", headers.user_agent, "<br/>")
                ngx.say("=======================================","</br>")                
                for k,v in pairs(headers) do
                    if type(v) == "table" then
                        ngx.say(k, " : ", table.concat(v, ","), "<br/>")
                    else
                        ngx.say(k, " : ", v, "<br/>")
                    end
                end
                ngx.say("headers end", "<br/>")
                ngx.say("<br/>&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值