标题有点绕口。我尽量把关键词都贴进去。之前因为自己的nginx安装了ngx_lua模块,但是又需要引入


但是安装luafilesystem又需要先安装luarocks,比较繁琐。这里就想记录一下安装过程。



nginx安装ngx_lua模块可以参考:LNMP平滑升级nginx并安装ngx_lua模块教程



下面进入正题



下载:

wget http://keplerproject.github.io/luarocks/releases/luarocks-2.2.2.tar.gz

解压:
tar -zxvf luarocks-2.2.2.tar.gz 进入目录:
cd luarocks-2.2.2

安装 luarocks


./configure --with-lua="/usr/local" --lua-suffix="jit" --with-lua-include="/usr/local/include/luajit-2.0"

其中“/usr/local/include/luajit-2.0” 可以 find / -name lua.h 先找下路径

make build
make install  安装 luafilesystem luarocks install luafilesystem 因为自己网站526net一直放在国外,速度一直不怎么理想。所以网站前端一直是买一些低配廉价,但是对国内线路友好的机器来做反向代理。 nginx的反向代理可以说已经很好用了,我一直使用proxy_store方式来做缓存,唯一的缺点就是不会自动清理缓存。我是通过定时任务自动删除的。 但是还是做不到我要的效果,前两天使用lua写了脚本,实现客户访问前端,lua判断文件的创建时间,然后根据设定的时间来自动删除缓存。 nginx 的设置我就不多说了,lua的安装可以参考 《LNMP平滑升级nginx并安装ngx_lua模块教程》 《为nginx的luajit安装luarocks并安装luafilesystem》两篇文章 lua代码就很简单了。因为使用了luafilesystem来操作文件。 主要流程是。 用户访问前端完毕的时候,自动执行lua脚本,lua首先根据url来获取缓存文件路径,判断文件是否存在。如果存在获取文件的修改时间, 同时判断修改时间和缓存过期时间是否一致,一致的话删除缓存文件。下次用户访问会自动从源服务器抓回新的数据。 这个方式我测试了3天,没大问题。终于抛弃了定时整站删除的无奈了。 下面贴下主要代码: > 判断文件是否存在 很简单只需要 open一下就行了 function file_exists(path)
local file = io.open(path, "rb")
if file then file:close() end
return file ~= nil
end > 对时间的操作,计算过期时间。 local function getNewDate(srcDateTime,interval)
local ofset=
ofset = * interval
local newTime = os.date("*t", srcDateTime + tonumber(ofset))
return os.time(newTime)
end > 程序主体流程,代码是最初版的,我用的已经改造为数组循环判断 local getfile=ngx.var.document_root..ngx.var.uri local matchtime = local matchstr = if file_exists(getfile) then local lfs = require"lfs"
local new_att = assert (lfs.attributes(getfile))
local oldTime=new_att.change
if(string.match(ngx.var.uri,matchstr)) then
local newTime=getNewDate(oldTime,matchtime)
if os.time()>newTime then
os.remove(getfile)
end
end end

nginx利用lua实现nginx反向代理proxy_store缓存文件自删除的更多相关文章

  1. Nginx服务器部署 负载均衡 反向代理

    Nginx服务器部署负载均衡反向代理 LVS Nginx HAProxy的优缺点 三种负载均衡器的优缺点说明如下: LVS的优点: 1.抗负载能力强.工作在第4层仅作分发之用,没有流量的产生,这个特点 ...

  2. 使用Nginx压缩文件、设置反向代理缓存提高响应速度

    Gzip压缩: 最开始,这个竟然要6m多(大到不寻常),响应的速度3分多钟. 所以先对返回的文件进行gzip压缩.判断返回的资源是否有使用gzip压缩,观察响应头部里面,如果没有 Content-En ...

  3. Centos 7 上使用nginx为Node.js配置反向代理时错误:(13: Permission denied) while connecting to upstream

    错误来源:Centos 7 上使用nginx为Node.js配置反向代理时产生(13: Permission denied) while connecting to upstream的错误 nginx ...

  4. Nginx利用lua剪辑FastDFS图片

    Nginx利用lua剪辑FastDFS中的图片 我们经常用FastDFS来做图片服务器,通过nginx来上传或者获取图片.本文要实现的功能是,当客户端要获取不同尺寸的图片是,lua根据url中的尺寸大 ...

  5. 使用Nginx对.NetCore站点进行反向代理

    前言 之前的博客我已经在Linux上部署好了.NetCore站点且通过Supervisor对站点进行了进程守护,同时也安装好了Nginx.Nginx的用处非常大,还是简单说下,它最大的功能就是方便我们 ...

  6. nginx配置虚拟主机、反向代理和负载均衡

    为了实现这个功能,需要修改nginx的配置文件,将nginx.conf清理一下,使结构更清晰. worker_processes ; events { worker_connections ; } h ...

  7. 基于nginx + lua实现的反向代理动态更新

    大家都知道,nginx是当前应用非常广泛的web服务器,热度因为他的高并发高性能高可靠性,且轻量级!牛逼的不行,不多说这些. 今天要介绍的是,如何基于nginx和lua脚本,也就是在openresty ...

  8. NGINX之——配置HTTPS加密反向代理訪问–自签CA

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46695495 出于公司内部訪问考虑,採用的CA是本机Openssl自签名生成的,因 ...

  9. Linux服务之nginx服务篇三(反向代理、负载均衡)

    一.Nginx实现反向代理 概念 反向代理:在收到客户端请求之后,会修目标IP地址和端口 正向代理:在收到客户端请求之后,会修源IP地址和端口 上游服务器:代理服务器后端的哪些真正给客户端提供服务的节 ...

随机推荐

  1. 【分块】【树状数组】bzoj3744 Gty的妹子序列

    离散化,分块. 预处理出:ans[i][j] 第i块到第j块的逆序对数. f[i][j] 第1~i块中大于j的数的个数. g[i][j] 第1~j块中小于j的数的个数. 每次询问时对于整块部分可以O( ...

  2. u-boot支持LCD显示(基于TQ2440)

    平台简介 Linux版本:Linux-3.14 u-boot版本:u-boot-2015.04 硬件:TQ2440(内存:64MB  NandFlash:256MB) 作者:彭东林 邮箱:pengdo ...

  3. 想使用gevent、mysql、sqlalchemy实现python项目协程异步达到并发的效果

    如题,但是查看了很多资料,都说python这边的mysql不支持异步并发,只能阻塞进行,心塞30秒,暂时放弃这方面的研究 如果不操作数据库的化,比如请求url.操作文件,还是可以用gevent来异步实 ...

  4. Thinkphp2.1爆出重大安全漏洞

    thinkphp 2.1的版本 我们来分析下漏洞吧 官方发布了一个安全补丁 表述是:该URL安全漏洞会造成用户在客户端伪造URL,执行非法代码. 官方的补丁: /trunk/ThinkPHP/Lib/ ...

  5. django admin富文本编辑kindeditor

    最近在做django项目,需要在后台管理系统加入富文本编辑 其实加入富文本编辑很简单,就是导入几个编辑器的js脚本到admin页面内,下面说说怎么做 第一步,下载想要的富文本编辑器如kindedito ...

  6. Snapdragon profiler连android手机

    oppo11 晓龙660 找一根好用的usb数据线 去设置->开发者选项->usb调试 打开(十分钟会自动关,注意再开开) 去windows cmd ===adb devices 会列出这 ...

  7. JS组件系列——自己封装一个上传文件组件

    页面调用: $('#fileUpload').cemsUpload({ errorEmpty:'<s:text name="cupgrade.view.tip.upload.file. ...

  8. 从webstorm转vscode,来一个vscode的教程和心得总结

    背景 在公司跑代码,每天卡的吐血,感觉生命都被浪费了. 再在摧残了一段时间,天天想摔电脑以后,被同事安利vscode, 那就开始搞起来 安装 这个我真的不用说了吧 插件 快捷键 shift + alt ...

  9. 模式识别之Earley算法入门详讲

    引言:刚学习模式识别时,读Earley算法有些晦涩,可能是自己太笨.看了网上各种资料,还是似懂非懂,后来明白了,是网上的前辈们境界太高,写的最基本的东西还是非常抽象,我都领悟不了,所以决定写个白痴版的 ...

  10. Java 8 List

    排序 依据自定义对象的某个属性进行排序. List<Student> students = Arrays.asList(student1, student2, student3); stu ...