OpenResty简介与实践

4-20 3,271 views

简介

OpenResty(亦称ngx_openresty,http://openresty.org/)是一个基于Nginx的 Web 应用服务器。它集成了Nginx内核、LuaJIT、Lua语言实现的库以及许多第三方的Nginx模块。开发者可以使用Lua语言对Nginx中的C模块和Lua模块进行脚本编程,从而构建高性能的Web应用。

安装

tar xvf ngx_openresty-1.7.7.2.tar.gz
cd ngx_openresty-1.7.7.2/
./configure
make
make install

OpenResty依赖perl 5.6.1+、libreadline、libpcre、libssl,因此在configure时,可能会由于缺少依赖报如下错误:
1)“./configure: error: the HTTP rewrite module requires the PCRE library.”
需要安装libpcre:

yum install pcre-devel.x86_64

2)“./configure: error: SSL modules require the OpenSSL library.”
需要安装libssl:

yum install openssl-devel.x86_64

安装成功后,OpenResty默认安装至/usr/local/openresty。

使用

使用OpenResty开发接口,该接口实现以下逻辑:
1)接口根据传入的key返回value;
2)接口先尝试从Redis中读取key所对应的value,若读取到value,则直接返回;
3)若读取不到value,则接口再尝试从MySQL中读取key所对应的value,若读取到value,则将key-value写入Redis,并返回value。
在OpenResty安装目录的nginx/conf中新建Lua脚本文件value.lua,代码如下所示,其实现了上述逻辑:

配置nginx/conf/nginx.conf,对于地址为“/api/value”的请求使用value.lua处理:

server {
    listen 8080;
    server_name localhost;
    location /api/value {
        content_by_lua_file conf/value.lua;
    }
    …
}

启动Nginx,浏览器中访问“api/value?key=v1”,成功返回value:
1

基于WebSocket实现微信小程序的消息推送

微信小程序支持通过基于WebSocket进行消息推送,提供了相应的API,例如创建连接示例代码: JavaScript wx.connectSocket({ ...

阅读全文

基于nginx-sticky-module-ng实现会话保持(Sticky Sessions)

对服务进行集群部署,前端进行负载均衡时,需要实现会话保持,对于同一会话的多个请求,通过集群中的一个节点来提供服务。系统的部署结构如图所示,通过Resin...

阅读全文

ActiveMQ基于Zookeeper和LevelDB实现Master/Slave

ActiveMQ的Master/Slave目前支持三种实现方式: 1)Shared File System Master Slave; 2)JDBC Master Slave; 3)Replicated LevelDB Store。 对于第三种方...

阅读全文