nginx里使用openresty-lua-redis等

news/2024/11/30 9:46:04/

安装

version: "3"
services:nginx_lua:image: openresty/openresty:alpine#image: openresty/openresty:latest #没有安装opm

以下命令可以在Dockerfile编写, 前缀以RUN补充,使其创建新的镜像
或者在运行后,进容器后直接运行

安装opm

curl -L -o /usr/local/bin/opm https://raw.githubusercontent.com/openresty/opm/master/opm  &&  chmod +x /usr/local/bin/opm

安装基础工具,以避免以下面的报错

apk add --no-cache bash perl  curl
#openresty:alpine版本的包管理工具apk,如使用latest,包管理工具是apt

报错1:
$ opm -h
can’t execute ‘perl’: No such file or directory
报错2:
ERROR: failed to find package: server error: sh: curl: not found

通过opm去查找依赖库

7793bfb21d5b:/# opm search base64
openresty/lua-resty-core                          New FFI-based Lua API for the ngx_lua module
bungle/lua-resty-nettle                           Nettle (a low-level cryptographic library) Bindings for LuaJIT FFI
bungle/lua-resty-session                          Session Library for OpenResty - Flexible and Secure
jprjr/luasodium                                   An FFI binding to libsodium.
GUI/lua-resty-txid                                Generate sortable, unique transaction or request IDs.
xiaocang/lua-resty-openssl                        FFI-based OpenSSL binding for LuaJIT
fffonion/lua-resty-openssl                        FFI-based OpenSSL binding for LuaJIT
fffonion/lua-resty-acme                           Automatic Let's Encrypt certificate serving and Lua implementation of ACME procotol
hamishforbes/lua-resty-consul                     Library to interface with the consul HTTP API
lilien1010/lua-resty-s3uploader                   an http s3 client for openresty
duhoobo/lua-resty-smtp                            A http to smtp bridge library for the ngx_lua module

安装时,需要加上account name

7793bfb21d5b:/# opm install lua-resty-random
ERROR: package name lua-resty-random is not prefixed by an account name.

nginx里使用lua

  1. 正常的响应: ngx.say(“Hello, OpenResty!”)
  2. 重定向: ngx.redirect(long_url, ngx.HTTP_MOVED_PERMANENTLY)
  3. 生成随机数:
	local random_bytes = {}for i = 1, 6 dotable.insert(random_bytes, string.char(math.random(0, 255)))endrandom_bytes = table.concat(random_bytes)
  1. Base64编码: ngx.encode_base64(random_bytes)
  2. 截取前5个字符: string.sub(encoded_bytes, 1, 5)
  3. table将k-v加入res对象: table.insert(result, key … ", " … value)
  4. table合并为字符串: table.concat(result, “\n”)

redis相关操作

  1. 引入redis
	local redis = require("resty.redis")local red = redis:new()
  1. 连接redis
red:connect("192.168.0.xx", 6379)
  1. redis写入,并设置key7天过期
	local saved, err = red:setex(key, 604800, long_url)
  1. redis读取
	local long_url, err = red:get("code:" .. code)
  1. 关闭Redis连接
	local ok, err = red:set_keepalive(10000, 100)
server {listen 80;server_name 0.0.0.0;location / {default_type  text/html;content_by_lua_block {ngx.say("Hello, OpenResty!")}}location /s/ {# 使用Lua模块content_by_lua_block {-- 执行重定向return ngx.redirect("http://example.com", ngx.HTTP_MOVED_PERMANENTLY)}}location /s/create {# 使用Lua模块content_by_lua_block {local redis = require("resty.redis")local red = redis:new()-- 连接到Redis服务器local ok, err = red:connect("192.168.0.xx", 6379)if not ok thenngx.log(ngx.ERR, "Failed to connect to Redis: ", err)return ngx.exit(500)end# ok = 1ngx.log(ngx.INFO, "connect to Redis: ", ok)ngx.say("Hello, OpenResty!")}}}

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

相关文章

爬虫入门指南:学习爬虫的基础知识和技巧

文章目录 爬虫基础知识什么是爬虫?爬虫的工作原理爬虫的应用领域 爬虫准备工作安装Python安装必要的库和工具 网页解析与XPath网页结构与标签CSS选择器与XPathXpath 语法XPath的基本表达式:XPath的谓语(Predicate):XPa…

win10无限重启_让迷你掌上电脑更具生产力,GPD安装 Win10+Ubuntu双系统

作为一名电气工程师(偶尔也充当程序员的角色),刚子一直想拥有一台小巧便携续航强的笔记本电脑,以应对经常出差调试的任务。市场上常见的笔记本电脑一般都是13吋以上的,背出去实在太沉重,轻薄本很多接口不全,又需要扩展…

[python][gradio]gr.State用法

gr.State是一个不可见的控件,目的是在后台存储一些变量方便访问和交互。 官方说明: 特殊的隐藏组件,用于存储同一用户运行演示时的会话状态。当用户刷新页面时,State 变量的值被清除。 实例: import gradio as grd…

linux lib目录找不到,linux中jpeglib库文件我安装了,但是我运行自己写的代码总是找不到这个库...

首先,找到你的VC6.0的安装路径(就是你安装到哪里了,不是你安装包setup.exe的路径),假设按照默认路径安装的话,头文件和库文件的路径应该是这样子的: include files: C:\Program Files\Microsoft Visual Studio\VC98\IN…

安装gpd(点云库)相关

看这篇文章: 机器人6D抓取姿态检测(GPD)-Ubuntu 16.04 ROS Kinetic RGBD CPU版本的实现 https://blog.csdn.net/Eeko_x/article/details/104835154 记住一定不要装带有caffe框架的gpd,下载这个https://github.com/sharronliu/gpd/tree/…

gpd微型计算机,获《微型计算机》称赞,GPD MicroPC工程师的随身利器

对于喜爱数码的小伙伴来说,《微型计算机》这本杂志应该不陌生了。它是一本专注于电脑硬件技术与产品,向小伙伴们介绍电脑硬件全面科普科技与市场的一款大众化普及性杂志,在电脑玩家心目中可以说堪称宝典。最近《微型计算机》杂志上就详细测评…

GPD源码分析

代码流程 目录 代码流程 GPD的使用-输入输出 gpd使用示例 gpd算法框架 构造函数-GraspDetector(const std::string &config_filename) 点云预处理 抓取检测 代码处理流程 采样通过generateGraspCandidateSets函数产生抓取姿态通过工作空间过滤抓取姿态-std::vecto…