资讯专栏INFORMATION COLUMN

Just for fun——Nginx配Lua写个hello world

kevin / 2064人阅读

摘要:是一个基于与的高性能平台,其内部集成了大量精良的库第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发扩展性极高的动态应用服务和动态网关。,,,阶段处理,比如记录访问量统计平均响应时间

Lua

lua的特点

小巧:一个完整的Lua解释器不过200k

可扩展性:Lua的解释器是100%的ANSI编写的,它提供了非常易于使用的扩展接口和机制,所以Lua的脚本很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数

速度快

OpenResty

Nginx以轻量级和支持高并发著称,所以把Nginx和Lua结合是很好的想法。所以有了OpenResty

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

例子(WIndows平台为例)

到下载页面下载OpenResty,或者用下载WNMP的OpenResty版本
增加一个虚拟主机配置

http {
    server {
        listen 80;
        server_name  m.test.com;
        
        location / {
            default_type text/html;
            content_by_lua "
                ngx.say("

hello, world

") "; } } }

开启Nginx,访问m.test.com得到:

ngx是Nginx_Lua模块传递给lua的变量

Nginx_Lua模块指令
指令 所处处理阶段 使用范围 解释
init_by_lua init_by_lua_file loading-config http nginx Master进程加载配置时执行; 通常用于初始化全局配置/预加载Lua模块
init_worker_by_lua init_worker_by_lua_file starting-worker http 每个Nginx Worker进程启动时调用的计时器,如果Master进程不允许则只会在init_by_lua之后调用; 通常用于定时拉取配置/数据,或者后端服务的健康检查
set_by_lua set_by_lua_file rewrite server,server if,location,location if 设置nginx变量,可以实现复杂的赋值逻辑;此处是阻塞的,Lua代码要做到非常快;
rewrite_by_lua rewrite_by_lua_file rewrite tail http,server,location,location if rrewrite阶段处理,可以实现复杂的转发/重定向逻辑;
access_by_lua access_by_lua_file access tail http,server,location,location if 请求访问阶段处理,用于访问控制
content_by_lua content_by_lua_file content location,location if 内容处理器,接收请求处理并输出响应
header_filter_by_lua header_filter_by_lua_file output-header-filter http,server,location,location if 设置header和cookie
body_filter_by_lua body_filter_by_lua_file output-body-filter http,server,location,location if 对响应数据进行过滤,比如截断、替换。
log_by_lua log_by_lua_file log http,server,location,location if log阶段处理,比如记录访问量/统计平均响应时间

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39729.html

相关文章

  • Just for fun——windows上的php-fpm

    摘要:,配是通过一个类似的协议,升级版的的。在上有帮你管理进程,在似乎没有,这是有点令人悲伤的。检验一下然后开启然后配置中里文件在盘建立一个的文件夹,放入,开启测试写入访问应用我的项目就用了这个东西,,欢迎 fastcgi As we all know,nginx配php是通过fastcgi(一个类似http的协议,升级版的cgi)的。在linux上有php-fpm帮你管理进程,在windo...

    kel 评论0 收藏0
  • LuaNginx的应用

    摘要:例如响应部分通过的形式获取或设置响应头信息。以某个状态码返回响应内容,状态码常量对应关系见部分,也支持数字形式的状态码。重定向当前请求到新的,响应状态码可选列表为默认。具体内容如下相关文章进入的世界在的应用 首发于 樊浩柏科学院 当 Nginx 标准模块和配置不能灵活地适应系统要求时,就可以考虑使用 Lua 扩展和定制 Nginx 服务。OpenResty 集成了大量精良的 Lua 库...

    Mike617 评论0 收藏0
  • 创建Lapis应用程序

    摘要:使用创建应用程序生成一个新项目如果您尚未阅读,请阅读入门指南,了解有关创建新项目骨架的信息以及,配置和命令的详细信息。是包含应用程序的常规模块。 使用Lua创建Lapis应用程序 生成一个新项目 如果您尚未阅读,请阅读入门指南,了解有关创建新项目骨架的信息以及OpenResty,Nginx配置和lapis命令的详细信息。 您可以在当前目录中通过运行以下命令启动一个新的Lua项目: la...

    jzzlee 评论0 收藏0
  • Openresty的开发闭环初探

    摘要:多返回值开始变得越来越与众不同了允许函数返回多个结果。这种情况函数没有足够的返回值时也会用来补充。中的索引习惯以开始。 showImg(https://segmentfault.com/img/bVIcQU?w=136&h=103); 为什么值得入手? Nginx作为现在使用最广泛的高性能后端服务器,Openresty为之提供了动态预言的灵活,当性能与灵活走在了一起,无疑对于被之前陷于...

    ruicbAndroid 评论0 收藏0
  • Just for fun——写个爬虫抓取whois信息

    摘要:代码需要的字段模仿获取西部数码信息域名代理模拟执行代码解析出错添加代理解析出错查询西部数码失败请求西部数码失败生成失败提取西部数码数据使用结果另外这个域名是我的,有意出售。 目标对象和过程 爬取的网站是西部数码,该网站在https://www.west.cn/web/whois...可以查询whois信息,通过chrome调试知道,数据是从接口:https://www.west.cn/...

    Cheng_Gang 评论0 收藏0

发表评论

0条评论

kevin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<