OpenResty 安装及lua-resty-redis

news/2024/11/17 6:01:37/

目的: 需要记录用户真实IP + 访问量

openresty_2">1. 下载openresty

https://openresty.org/download/openresty-1.25.3.1.tar.gz

2. 编译安装

./configure --help | more 可以查看configure 可选参数

# 1、安装前置依赖
yum install -y readline-devel pcre pcre-devel openssl openssl-devel gcc curl GeoIP-devel perl# 2、编译
##选择模块 ./configure --help
sudo ./configure --with-luajit --with-pcre --with-http_gzip_static_module --with-http_realip_module --with-http_geoip_module --with-http_ssl_module  --with-http_stub_status_module --without-lua_resty_redis# 3、安装,默认安装在/usr/local/openresty 目录
sudo gmake
sudo gmake install

luarestyredis_24">3. 安装 lua-resty-redis

说明:安装lua-resty-redis模块主要用于记录关键信息,例如:ip和访问次数。

git clone https://github.com/openresty/lua-resty-redis.gitsudo cp -r lua-resty-redis/lib/resty/* /usr/local/openresty/site/lualib/resty/

lua__ip_redislua__34">4. 创建lua 文件 ip_redis.lua 并引用

ip_redis.lua 内容:

lua">local redis = require("resty.redis")
local red = redis:new()-- 连接到 Redis
local ok, err = red:connect("192.168.1.2", 6379)
if not ok thenngx.log(ngx.ERR, "Failed to connect to Redis server: ", err)return
end-- 身份验证
local res, err = red:auth("123456")
if not res thenngx.log(ngx.ERR, "Failed to authenticate: ", err)red:close()return
end-- 选择数据库
local ok, err = red:select(1)
if not ok thenngx.log(ngx.ERR, "Failed to select database: ", err)red:close()return
end-- 获取当前时间戳(秒)
local current_timestamp = ngx.now()-- 设置 Redis 键,格式为 "ip:timestamp"
local key = ngx.var.remote_addr .. ":" .. math.floor(current_timestamp / 60)-- 增加计数器
local res, err = red:incr(key)
if not res thenngx.log(ngx.ERR, "Failed to increment counter: ", err)red:close()return
end-- 获取计数器的值
local count, err = red:get(key)
if not count thenngx.log(ngx.ERR, "Failed to get count: ", err)red:close()return
end-- 关闭 Redis 连接
local ok, err = red:close()
if not ok thenngx.log(ngx.ERR, "Failed to close Redis connection: ", err)return
endngx.log(ngx.INFO, "IP ", ngx.var.remote_addr, " 访问了 ", count, " 次")

5. nginx.conf 引用

location / {#root   html;#index  index.html index.htm;default_type text/html;access_by_lua_file lua/all_redis.lua;
}

相关文档地址: lua


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

相关文章

十一、大模型-Semantic Kernel与 LangChain 的对比

Semantic Kernel 与 LangChain 的对比 Semantic Kernel 和 LangChain 都是用于开发基于大型语言模型(LLM)的应用程序的框架,但它们各有特点和优势。 基本概念和目标 Semantic Kernel 是一个由微软开发的轻量级 SDK,旨在帮助开发…

Python基础学习之记录中间文件

倘若想记录代码运行过程中的结果文件,那么以下函数仅供参考 代码示例: import os import datetime import sys import pandas as pd# 定义总的文件夹路径 base_folder E:\\D\\log\\product_data_compare_log# 定义一个函数来创建带时间戳的文件夹 def…

k8s 资源组版本支持列表

1 kubernetes的资源注册表 kube-apiserver组件启动后的第一件事情是将Kubernetes所支持的资源注册到Scheme资源注册表中,这样后面启动的逻辑才能够从Scheme资源注册表中拿到资源信息并启动和运行API服务。 kube-apiserver资源注册分为两步:第1步,初始化Scheme资源注册表;…

Python学习指南

Python是一门应用极为广泛的编程语言,目前在Web开发、爬虫、数据分析、人工智能和机器人开发等领域都有着广泛的应用。Python的语法相对简单,许多人选择通过自学或参加培训来掌握Python技术。针对以就业为目的的学习者,选择学习Python技术时&…

安全运维 -- splunk 操作手册

0x00 背景 splunk 日常运维操作笔记。 0x01 场景 1.agent 安装 linux: tar -zxvf splunkforwarder-8.0.3-a6754d8441bf-Linux-x86_64.tgz -C /opt cp -r config /opt/splunkforwarder/etc/apps vi /opt/splunkforwarder/etc/apps/prefix_app_inputs/local/inputs…

2分钟自己写小游戏:使用js和css编写石头剪刀布小游戏、扫雷小游戏、五子棋小游戏。新手老手毕业论文都能用。

系列文章目录 【复制就能用1】2分钟玩转轮播图,unslider的详细用法 【复制就能用2】css实现转动的大风车,效果很不错。 【复制就能用3】2分钟自己写小游戏:剪刀石头布小游戏、扫雷游戏、五子棋小游戏 【复制就能用4】2024最新智慧医疗智慧医院大数据…

Jetson Orin NX L4T35.5.0平台LT6911芯片 调试记录(2)vi discarding frame问题调试

基于上篇调试记录 Jetson Orin NX L4T35.5.0平台LT6911芯片 调试记录(1)MIPI问题调试-CSDN博客 1.前言 当通过gstreamer持续捕获视频设备时,帧数会下降,并且I输入越高,丢失的帧数越多。 当达到4k30hz时,它完全无法使用,系统会在几秒钟的收集后崩溃并重新启动 4k30hz …

【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍

博主打算从0-1讲解下java进阶篇教学,今天教学第九篇:MyBatis-Plus用法介绍。 在 MyBatis-Plus 3.5.0 中,LambdaQueryWrapper支持多种条件构造方式,除了等于(eq)、不等于(ne)、大于&a…