[转帖]Ngx_lua

ngx,lua · 浏览次数 : 0

小编点评

**ngx_lua 模块简介** ngx_lua 是一个 Nginx 模块,通过将 LuaJIT 的虚拟机嵌入到 Nginx 的 worker 中,保持了 lua 开发的简单特性,同时保持了高性能。 **安装 OpenResty** 安装 OpenResty 需要下载源码包并进行配置和编译。可以参考官方文档的说明进行安装。 **配置 OpenResty** 默认情况下,OpenResty 使用 80端口,可以修改 `nginx.conf` 中的 `server` 标签设置默认端口。 **使用示例** 修改 `nginx.conf` 中的 `server` 标签,示例如下: ```nginx server { listen 8080; location /hello { default_type text/html; content_by_lua ' ngx.say(\"<p>hello, world</p>\") '; } } ``` 访问 `http://127.0.0.1:8080/hello`,应该看到 "hello, world" 的文本。

正文

http://me.52fhy.com/lua-book/chapter12.html

 


简介

ngx_lua 指的是 lua-nginx-module模块:通过将 LuaJIT 的虚拟机嵌入到 Nginx 的 worker 中,这样既保持高性能,又能不失去lua开发的简单特性。

OpenResty 就是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。OpenResty 基于Nginx开发,可以简单认为是 Nginx + lua-nginx-module的组合版。

官网:https://openresty.org/cn/
官方文档:https://github.com/openresty/lua-nginx-module

Hello World

OpenResty 安装

以 CentOS 为例:

mkdir /opt && cd /opt

# download openresty
wget https://openresty.org/download/openresty-1.13.6.2.tar.gz

tar zxvf openresty-1.13.6.2.tar.gz
cd openresty-1.13.6.2

# configure
./configure --prefix=/usr/local/openresty -j4

make -j4 && make install

其中 源码包可以到 https://openresty.org/cn/download.html 该页面获取。 -j4表示使用4核。configure那一步还可以指定各种参数:

./configure --prefix=/usr/local/openresty \
            --with-luajit \
            --without-http_redis2_module \
            --with-http_iconv_module \
            --with-http_postgres_module

使用 ./configure --help 查看更多的选项。

其它系统环境上安装可以参考 https://openresty.org/cn/installation.html 。

其实安装 OpenResty 和安装 Nginx 是类似的,因为 OpenResty 是基于 Nginx 开发的。

如果已经安装了 Nginx,又想使用 OpenResty 的功能,可以参考 《Nginx编译安装Lua》:https://www.cnblogs.com/52fhy/p/10164553.html 一文安装lua-nginx-module模块即可。

第一个程序

修改 /usr/local/openresty/nginx/conf/nginx.conf:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    server {
        listen 8080;
        location /hello {
            default_type text/html;
            content_by_lua '
                ngx.say("<p>hello, world</p>")
            ';
        }
    }
}

把默认的80端口改为8080,新增/hello部分。

其中content_by_lua便是 OpenResty 提供的指令,在官方文档可以搜索到:

现在我们启动OpenResty:

/usr/local/openresty/nginx/sbin/nginx

启动成功后,查看效果:

curl http://127.0.0.1:8080/hello
<p>hello, world</p>

说明成功运行了。

参考

1、OpenResty® - 中文官方站
https://openresty.org/cn/
2、openresty/lua-nginx-module: Embed the Power of Lua into NGINX HTTP servers
https://github.com/openresty/lua-nginx-module#version
3、环境搭建 · OpenResty最佳实践
https://moonbingbing.gitbooks.io/openresty-best-practices/content/openresty/install.html

与[转帖]Ngx_lua相似的内容:

[转帖]Ngx_lua

http://me.52fhy.com/lua-book/chapter12.html 简介 ngx_lua 指的是 lua-nginx-module模块:通过将 LuaJIT 的虚拟机嵌入到 Nginx 的 worker 中,这样既保持高性能,又能不失去lua开发的简单特性。 OpenResty 

[转帖]nginx的luajit安装luarocks并安装luafilesystem

nginx的luajit安装luarocks并安装luafilesystem by admin on 2015-07-11 08:05:23 in , 69次 标题有点绕口。我尽量把关键词都贴进去。之前因为自己的nginx安装了ngx_lua模块,但是又需要引入 但是安装luafilesystem又

[转帖]Module ngx_http_v2_module

https://nginx.org/en/docs/http/ngx_http_v2_module.html#:~:text=Sets%20the%20maximum%20number%20of%20concurrent%20HTTP%2F2%20streams,limit%20applies%20

[转帖]Nginx之ngx_http_realip_module

https://www.jianshu.com/p/80a779b3bf20 问题描述 今日在线上查询nginx日志文件的用户真实IP时,发现remote_addr和XFF地址一模一样,这点让我很是不理解,正常来讲remote_addr应该获取到的是上一个节点转发的IP地址,我们却是获得了用户的真实

[转帖]nginx的map指令

一 ngx_http_map_module模块 1) map 指令是由 'ngx_http_map_module 模块'提供的,默认情况下安装 nginx 都会'安装'该模块. 2) map 的主要作用是'创建自定义变量',通过使用 nginx 的'内置'变量,去'匹配'某些特定规则;如果匹配成功则

[转帖]优化超大 Nginx 配置导致的内存碎片

https://blog.openresty.com.cn/cn/ngx-cycle-pool-frag/?src=org_news 章亦春发布于 Feb 14, 2023更新于 Mar 2, 2023 预计阅读 6 分钟 阅读次数 我们最近使用 OpenResty XRay 帮助一个销售 CDN

[转帖]NGINX的一些SEO优化常用配置

https://www.jianshu.com/p/e55073e5ebc7 官方文档:http://nginx.org/en/docs/ 常用模块: ngx_http_core_module ngx_http_rewrite_module ngx_http_proxy_module ngx_htt

[转帖]最新版nginx内置变量

在配置基于nginx服务器的网站时,必然会用到 nginx内置变量 ,下面笔者将它整理成列表,把最新版本的变量列出来,以方便做配置时查询 nginx内置变量 内置变量存放在 ngx_http_core_module 模块中,变量的命名方式和apache 服务器变量是一致的。总而言之,这些变量代表着客

[转帖]Nginx 负载均衡 和 健康检查

https://www.jianshu.com/p/fbb0a81604d9 简介 从 nginx 下载, 到模块安装 关于为什么不使用 ngx_http_upstream_module 测试过 ngx_http_upstream_module 这个模块, 在应用稳定的情况下做做负载均衡还可以. 但

[转帖]nginx的ip_hash算法

概念 根据用户请求的ip,利用算法映射成hash值,分配到特定的tomcat服务器中。主要是为了实现负载均衡,只要用户ip固定,则hash值固定,特定用户只能访问特定服务器,解决了session的问题。 源码分析 ip_hash算法的处理代码位于src\http\modules\ngx_http_u