`
qq362228416
  • 浏览: 33045 次
社区版块
存档分类
最新评论

openresty 前端开发入门一

阅读更多
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 等都进行一致的高性能响应。

以上是从官网拷过来的原话,我们通过写一个hello world,来走进openresty开发之旅

**下载地址**
http://openresty.org/cn/download.html

有的人不会下windows版,所以我这里直接给出下载地址,现在是最新版本,学会了之后,可以自己下载

mac、linux 平台
https://openresty.org/download/openresty-1.11.2.2.tar.gz

windows平台
https://openresty.org/download/openresty-1.11.2.2-win32.zip

**关于安装**
mac、linux安装看这里 http://openresty.org/cn/installation.html
windows 直接之后直接启动就可以了,不用安装

安装完之后别着急启动

**开始写代码了**

打开nginx目录下的conf/nginx.conf文件

在server中新增以下代码
```
location /hello {
    default_type text/html;
    content_by_lua '
        ngx.say("hello, world
")
    ';
}
```

类似这样
```
http {
    server {
        listen 80;
    server_name localhost;
        location / {
            default_type text/html;
            content_by_lua '
                ngx.say("hello, world
")
            ';
        }
    }
}
```

现在启动nginx,然后访问 http://localhost/hello,不出意外的话应该就OK了,如果你之前启动了,那么需要reload一下,nginx的基本操作这里就不介绍了

通过**ngx.say** 我们可以往客户端输出响应文本,在整个request周期内可以多次调用,接受的参数是字符串,如果输出table会报错

还有一个输出的函数是**ngx.print**,同样也是输出响应内容

这里有一个**坑**,就是调用ngx.say会在输出我们的内容之后会额外输出一个换行,但是ngx.print就不会,我之前一个同事用lua输出了一个200,然后前端用ajax调用,判断是否200,死活是false,看输出的内容就是200,差点怀疑人生,幸亏我比较机智,直接查看ajax请求源码,发现行号多了一行,就是那个换行,如果不仔细根本看不出来,这个坑被我一个同事踩了

上面的代码直接把lua代码写到nginx配置里面了,维护起来不是很方便,而且写代码的时候也没有语法高亮,提示这些,比较蛋疼,我们把它拿出来一个单独的文件,并放到一个nginx下面单独的lua目录下,方便管理

lua/hello.lua
```
ngx.say("hello, world
")
```

nginx.conf 改成这样
```
location / {
     default_type text/html;
     content_by_lua_file lua/hello.lua;
}
```

然后nginx reload 一下,再看效果,应该是一样的

我们修改一下hello.lua,在hello,world后面加一个!号,刷新浏览器发现没有任何变化,这是因为lua代码被缓存了,这就导致我们修改代码,就必须reload nginx 在能看到效果,如果是这样,那简直要疯了,其实要解决这个问题很简单,只要在nginx.conf里面把lua缓存给禁止掉就行了,当然在生产线上一定要把缓存打开,不然效果大打折扣

禁止lua缓存
```
server {
   listen 80;
   server_name localhost;
   lua_code_cache off; # 这个可以放在server下面,也可以凡在location下面,作用的范围也不一样,为了简单直接放这里了
   location / {
       default_type text/html;
       content_by_lua_file lua/hello.lua;
   }
}
```
改完之后reload一下nginx,这里**重点声明**一下修改nginx配置必须要reload,否则是没有效果的

现在我们再改hello.lua,然后刷新浏览器就会发现可以实时生效了

观察以上代码其实还会发现一个问题,如果我们想要处理很多个请求,那不是要在nginx里面配置N个location吗,我们肯定不会这么做,这里可以通过nginx正在匹配动态指定lua文件名,即可完成我们的需求,后台我再介绍如何打造一个属于我们的mvc轻量级框架,这里我们先这么做

location 改成这样
```
location ~ /lua/(.+) {
content_by_lua_file lua/$1.lua;
}
```

reload nginx

这个时候访问hello world的请求url就变成了
http://localhost/lua/hello 了
同理,我们在lua文件里面创建一个welcome.lua的话,就可以通过
http://localhost/lua/welcome 来访问了
以此类推,我们就可以通过新增多个文件来处理不同的请求了,而且修改了还能实时生效,剩下的就是完成业务代码了,比如调一下redis返回数据,或者mysql之类的,有悟性的同学在这里已经可以做很多事情了
0
0
分享到:
评论

相关推荐

    openresty-web-dev:openresty网站演示

    本项目是我写的一系列openresty web 前端开发文章的实例demo,方便测试运行,喜欢请点↑↑↑右上角Star↑↑↑ 文章目录 openresty 前端开发进阶三之后端整合二 openresty 前端开发进阶四之session篇 openresty 前端...

    openresty官方学习资料

    《OpenResty官方学习资料》是一份由章亦春编写的综合教程,旨在帮助开发者从初识到精通OpenResty这一强大的Web服务框架。OpenResty是基于Nginx和LuaJIT的开源项目,它将Nginx的高性能与Lua的轻量级脚本能力相结合,...

    openresty 入门

    OpenResty 是一个基于 Nginx 和 LuaJIT 的高性能 Web 平台,它通过提供一个集成了大量 Lua 库的 Nginx 模块,使得开发者可以在 Nginx 中直接使用 Lua 语言编写逻辑处理代码。OpenResty 的优势在于其高性能和灵活性,...

    openresty(nginx-lua-module-zh-wiki)中文文档.pdf

    OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web ...

    OpenResty最佳实践

    OpenResty是一套基于Nginx和LuaJIT的高性能Web平台,它将Lua语言和Nginx模块化设计的优点...它为那些对Web前端开发、网关开发以及限流代理服务器开发感兴趣的读者提供了宝贵的指导,同时也为OpenResty社区做出了贡献。

    OpenResty开发最佳实践pdf

    通过揉和众多设计良好的 Nginx 模块,OpenResty 有效地把 Nginx 服务器转变为一个强大的 Web 应用服务器,基于它开发人员可以使用 Lua 编程语言对 Nginx 核心以及现有的各种 Nginx C 模块进行脚本编程,构建出可以...

    openresty实践

    在OpenResty中,Lua环境的搭建是入门的基础,包括了对Lua基础语法的学习,如数据类型、表达式、控制结构、函数定义、模块化编程等。这要求开发者熟悉Lua语言的核心特性,比如它的基本数据类型(字符串、数字、布尔值...

    openresty 最佳实践

    OpenResty是一种基于Nginx的高性能Web平台,它通过集成LuaJIT来为Nginx提供强大的可编程能力。OpenResty允许开发者以极高的性能实现复杂的Web应用,且能够处理数以万计的并发连接。因此,OpenResty在处理大量HTTP...

    KONG OPENRESTY.pdf

    OpenResty 是一个基于 Nginx 的 Web 服务器,它提供了许多有用的功能,例如 Lua 脚本、SSL/TLS 支持、Websocket 支持等。OpenResty 是 Kong 的一个重要组件,它提供了 Kong 的核心功能。 Mashape 是 Kong 的背后...

    第一章 安装OpenResty(Nginx+Lua)开发环境

    本章将深入讲解如何安装OpenResty开发环境,帮助你搭建起一个基于Nginx的动态、高性能Web应用程序平台。 首先,我们要了解OpenResty是什么。OpenResty是一个开源项目,它集成了Nginx服务器和LuaJIT,允许开发者在...

    ProxyGatewayPGW基于openresty开发可以作为接口网关使用

    PGW(Proxy Gateway) Proxy Gateway基于openresty(nginx-lua-module)开发,可以作为接口网关(api gateway)使用,整合业务模块接口,微服务治理聚合,通过web配置界面,能够轻松进行代理配置管理,支持负载均衡...

    《OpenResty最佳实践》 .pdf

    书籍涵盖了多个知识点,从最基础的Lua脚本语言学习,到OpenResty的高级使用,为读者提供了一条从入门到进阶的学习路径。以下是书中提到的一些关键知识点的详细说明。 ### Lua脚本入门 Lua是一种轻量级的脚本语言,...

    OpenResty(openresty-1.21.4.1.tar.gz)

    OpenResty通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的...

    OpenResty1.25版本安装包

    总之,OpenResty 1.25.3.1是一个强大的Web开发框架,它融合了Nginx的高性能和Lua的灵活性,为构建高性能、高并发的Web应用提供了理想平台。通过深入了解和熟练使用OpenResty,开发者可以实现高效、可扩展的服务架构...

    openresty-1.25.3.1源码

    OpenResty 是一个基于 Nginx 的高性能、全功能的 Web 应用服务器和开发平台,它集成了 LuaJIT 脚本语言,允许开发者在 Nginx 的配置文件中直接编写 Lua 脚本来实现复杂的业务逻辑。本次我们关注的是 OpenResty 的...

    OpenResty安装过程.pptx

    - **定义**:OpenResty是一款基于Nginx与Lua的高性能Web平台,它使得开发人员能够轻松地编写出高性能、高可靠性的Web应用程序和服务。 - **特点**: - 集成了强大的Nginx核心和许多有用的Nginx模块。 - 支持丰富的...

    openresty源码(openresty-1.19.9.1.tar.gz)

    OpenResty是一款基于Nginx与LuaJIT的高性能Web平台,它集成了大量开源的高性能库,使得开发者能够利用Lua脚本语言快速构建出强大的动态Web应用。在这个压缩包"openresty-1.19.9.1.tar.gz"中,包含的是OpenResty的...

    基于OpenResty的百万级长连接推送.pdf

    OpenResty是一种基于Nginx的开源Web服务器软件,它提供了强大的Web开发和部署能力。基于OpenResty的百万级长连接推送系统设计,需要解决高并发、大规模连接和实时推送等挑战。下面是基于OpenResty的百万级长连接推送...

    openresty-1.21.4.1-win64.zip 包下载

    OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 应用开发平台,它集成了 LuaJIT,并且提供了大量的库模块,使得开发者能够利用 Lua 脚本语言快速构建出高性能的动态 web 应用。在 `openresty-1.21.4.1-win64.zip` ...

Global site tag (gtag.js) - Google Analytics