openresty安装

server/2024/10/22 11:33:18/

openresty官网:http://openresty.org/cn/
openresty官方安装文档:http://openresty.org/cn/installation.html
github地址:https://github.com/openresty

安装前准备,必须安装perl、libpcre、libssl库。
可以用如下命令查看安装情况

sudo ldconfig -vsudo apt install libpcre3-dev libssl-dev perl make build-essential curl libreadline-dev libncurses5-dev

到官网下载源码openresty-1.25.3.1后:

 ./configure
sudo make && make install
cd /usr/local/openresty

默认会被安装到/usr/local/openresty目录下
启动Nginx

sudo /usr/local/openresty/nginx/sbin/nginx
ps -ef | grep nginx

查看版本:

/usr/local/openresty/nginx/sbin/nginx -v

编写第一个hellow
OpenResty 是一个基于 NGINX 的全功能 Web 平台,集成了大量的第三方模块和库,其中最重要的是 ngx_lua 模块,它允许在 NGINX 配置中嵌入 Lua 脚本,实现高级的请求处理逻辑、动态内容生成、访问控制等功能。下面是一个简单的OpenResty 示例:

sudo vim /usr/local/openresty/nginx/conf/nginx.conf
server {listen       80;server_name  localhost;location /test {default_type 'text/plain'; #加这一句使得可以显示在网页上,如果只有下面代码,那么浏览器访问只会下载文件爱包含这句话。content_by_lua_block {ngx.say("Hello sherlock!, LuaJIT!")}}#charset koi8-r;#...伪代码
}

sudo /usr/local/openresty/nginx/sbin/nginx -t //检查以上配置文件的语法
sudo /usr/local/openresty/nginx/sbin/nginx -s reload //加载配置文件, 这里不是重启

访问:

curl -v http://127.0.0.1/test

返回:

Hello sherlock!, LuaJIT!

网页访问:http://127.0.0.1:80/test
显示:

Hello sherlock!, LuaJIT!

以上配置了一个监听 80 端口的 server 块,处理 example.com 的请求。
当访问路径 /test 时,通过 content_by_lua_block 指令执行 Lua 代码,输出 “Hello sherlock!, LuaJIT!”。

这只是一个最简单的演示,OpenResty 的强大之处在于它允许在 NGINX 配置中使用 Lua 脚本,从而实现更复杂的逻辑。以下是一个稍复杂的示例,演示了如何通过 OpenResty 实现简单的 API 访问控制:

http {lua_shared_dict my_limit 10m;server {listen 80;server_name api.example.com;location /api {access_by_lua_block {local limit = ngx.shared.my_limitlocal key = ngx.var.remote_addrlocal reqs, err = limit:get(key)if reqs thenif reqs > 10 thenngx.exit(ngx.HTTP_TOO_MANY_REQUESTS)elselimit:incr(key, 1)endelselimit:set(key, 1, 60)end}default_type 'application/json';content_by_lua_block {ngx.say('{"message": "API response"}')}}}
}

在这个示例中:

配置了一个共享内存字典 my_limit 用于存储请求计数。
当访问路径 /api 时,通过 access_by_lua_block 指令执行 Lua 代码,实现了一个简单的请求频率限制,每个 IP 地址在 60 秒内最多允许 10 次请求。
如果超过请求限制,将返回 HTTP 429 (TOO MANY REQUESTS) 状态码;否则,继续执行后续 Lua 代码返回 JSON 响应。

这只是 OpenResty 的一小部分功能展示,实际使用中可以结合更多的模块和功能,如 ngx_http_lua_upstream、ngx_http_headers_more、ngx_stream_lua 等,以实现更复杂的 Web 应用和服务。
更多示例,参考:
OpenResty 介绍与实战讲解(nginx&lua)


http://www.ppmy.cn/server/133886.html

相关文章

用大模型或者向量模型比如huggingface上的模型,处理一批图片,对该图片进行分类,检索

要使用大模型或向量模型对图片进行分类和检索,通常可以采用以下几种方法: 1. **图像分类**:使用预训练的图像分类模型(如ResNet、EfficientNet等)对图片进行分类。 2. **图像特征提取**:使用预训练的模型(如CLIP、ResNet等)提取图像的特征向量,然后进行相似度检索。 …

Android Framework关闭触摸振动

文章目录 手势上滑时振动代码performHapticFeedback作用和意义 触摸振动开关设置Framework关闭触摸时振动 手势上滑时振动代码 安卓手机由底部往上滑时,会有震动,然后进入Recents多任务,其触发震动调用的代码 packages/apps/Launcher3/quick…

lstm和informer和gru模型对比

1 介绍 本文使用数据集,对三个模型进行了对比,代码使用python完成,通过对比,发现lstm>gru>informer. 2 数据读取 使用降水量数据集,第一列表示降水,第二列表示出水量。 输入是两个特征输出是一个…

RabbitMQ系列学习笔记(八)--发布订阅模式

文章目录 一、发布订阅模式原理二、发布订阅模式实战1、消费者代码2、生产者代码3、查看运行结果 本文参考: 尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq RabbitMQ 详解 Centos7环境安装Erlang、RabbitMQ详细过程(配图) 一、发布订阅模式原理 在开发过程中&…

Spring Boot技术:图书进销存管理的创新实践

6系统测试 6.1概念和意义 测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为: 目的:发现程序的错误; 任务:通过在计算机上执行程序,暴露程序中潜在的错误。 另一个…

《武汉科技大学学报》

《武汉科技大学学报》 本学报国际刊号为ISSN 1674-3644,国内统一刊号为CN 42-1608/N。 本学报主要刊载冶金工程、冶金材料科学、冶金机械工程及自动化、信息科学与控制、化学工程、计算机科学、建筑工程、环境工程以及基础理论研究等学科的学术论文。择优报道国内…

pandas-数据分析-练习题-第1次练习

文章目录 简介开始练习第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题 简介 每次更新大概10个左右的关于pandas的操作知识点!做练习要从第一步开始,防止报错!本环境是Anaconda创建的虚拟环境中打开的jupyter noteboo…

【解决】webstrom uniapp rpx格式化空格 报错飘红

解决办法 1、安装 wechat mini program support 插件 2. 设置 wechat mini program 里小程序支持选为启用 3. 重新格式化显示正常&#xff0c;也不飘红了 注意要style开启scss支持lang"scss"&#xff0c;否则也会飘红报错 <style lang"scss"><…