Java培训:高性能web平台openrestry简介

 一、概述

  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客户端请求,甚至于对远程后端诸如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配置。

 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`

 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()`

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值