nginx-lua模块安装

news/2025/1/14 7:29:03/

一.简述

安装 Nginx 的 Lua 模块(通常指的是 ngx_lua 模块)可以显著增强 Nginx 的功能,使其能够执行 Lua 脚本。这使得 Nginx 可以处理更复杂的逻辑和动态内容生成。以下是详细的安装步骤,包括安装 OpenResty 或从源码编译 Nginx 和 ngx_lua 模块。

二.安装:

下载包:

# wget http://nginx.org/download/nginx-1.8.0.tar.gz依赖
# wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
# wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
# wget https://github.com/openresty/lua-nginx-module/archive/v0.10.5.tar.gz

luaJIT:利用JIT编译技术把Lua脚本直接编译成机器码由CPU运行

# tar fxvz LuaJIT-2.0.4.tar.gz 
# cd LuaJIT-2.0.4
# make && make install
# export LUAJIT_LIB=/usr/local/lib
# export LUAJIT_INC=/usr/local/include/luajit-2.0
# vim /etc/ld.so.conf.d/lua_luajit_lib.conf
/usr/local/lib
# ldconfig 

NDK(Nginx Development Kit)模块是一个拓展Nginx服务器核心功能的模块

第三方模块开发可以基于它来快速实现

NDK提供函数和宏处理一些基本任务,减轻第三方模块开发的代码量。

# tar fxvz v0.3.0.tar.gz 
# tar fxvz v0.10.5.tar.gz 

nginx 安装:

# ./configure --prefix=/vipkid/nginx_test --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_spdy_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-pcre --with-pcre-jit --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --with-ld-opt=' -Wl,-E' --add-module=../ngx_devel_kit-0.3.0/ --add-module=../lua-nginx-module-0.10.5/

配置文件中加载路径:

lua_package_path "/etc/nginx/lua/?.lua;;";     #lua依赖库,多个用";"分隔
lua_package_cpath "/usr/lib/lua/5.1/?.so;;";   #c编写的so依赖库

三. 测试验证:

    location /lua {default_type 'text/html';      #默认的mime typecontent_by_lua_block {         #lua内容处理块,不应该和proxy_pass一起使用ngx.say("hello:",ngx.var.arg_a);   #打印内容, ngx.var.arg_a 为http的参数(a)}}验证:
# curl http://10.136.27.175/lua?a=world
hello:world

lua_code_cache:

  默认情况下开启,缓存lua代码,每次lua代码变更必须reload nginx才生效,如果在开发阶段可以通过lua_code_cache off关闭,这样调试时每次修改lua代码不需要reload nginx:

location /lua {default_type 'text/html';lua_code_cache off;  #在配置文件中的变动(如content_by_lua_block)不会生效, 生产环境应禁止,会带来风险和性能影响content_by_lua_file /etc/nginx/lua/test.lua;  #content_by_lua_file类似content_by_lua_block,不过内容单独写                                                         在了一个文件中,用于代码和配置隔离}


http://www.ppmy.cn/news/1562978.html

相关文章

Python----Python高级(函数)

一、函数基础 1.1、函数的用法和底层分析 函数是可重用的程序代码块。 函数的作用,不仅可以实现代码的复用,更能实现代码的一致性。一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现。 在编写函数时&#xf…

机器学习头歌(第二部分)

一、朴素贝叶斯简述 任务描述 本关任务:了解朴素贝叶斯的基本概念,完成右侧窗口内的单项选择题。 相关知识 概率的解释 现在我们站在两个统计学派的角度来深入理解什么是概率。 经典统计学认为概率表述的是一件事发生的频率,概率定义为频率…

计算机网络之---静态路由与动态路由

静态路由 静态路由是由网络管理员手动配置并固定的路由方式。路由器通过静态配置的路由条目来转发数据包,而不会自动调整。它不依赖于任何路由协议。 特点: 手动配置:网络管理员需要手动在路由器中配置每条静态路由。不自动更新:…

基于异步IO的io_uring

基于异步IO的io_uring 1. io_uring的实现原理 io_uring使用了一种异步IO机制,它通过一对环形缓冲区(ring buffer)实现用户态于内核态之间的高效通信,用户只需将IO请求放入提交队列,当内核完成IO请求时,会将结果放入完成队列&…

MySQL主从:如何处理“Got Fatal Error 1236”或 MY-013114 错误(percona译文)

错误的 GTID 如今,典型的复制设置使用 GTID 模式,完整的错误消息可能如下所示: mysql > show replica status\G *************************** 1. row ***************************Replica_IO_Running: NoReplica_SQL_Running: YesLast_I…

CKA | Docker容器技术概述

往期文章推荐 【新版】容器&Kubernetes认证管理员(CKA)课程介绍 k8s-CKS认证课程介绍 【K8s】Kubernetes 词汇表 什么是Docker容器? 3个管理多k8s集群实用工具 K8S-CKA课程试听:Container 概述 CKA课程 | Docker容器技术概述 今日分…

Java Spring的@Async的使用及注意事项

1、概念和用途 Async是 Spring 框架提供的一个注解,用于标记一个方法,在一个单独的线程中异步执行。 这在处理一些耗时的操作(比如发送邮件、调用外部 API 等)时非常有用。 通过使用Async,可以让这些操作在后台执行…

Excel 技巧07 - 如何计算到两个日期之间的工作日数?(★)如何排除节假日计算两个日期之间的工作日数?

本文讲了如何在Excel中计算两个日期之间的工作日数,以及如何排除节假日计算两个日期之间的工作日数。 1,如何计算到两个日期之间的工作日数? 其实就是利用 NETWORKDAYS.INTL 函数 - weekend: 1 - 星期六,星期日 2,如…