nginx lua 与 autoindex测试笔记

nginx-lua 不仅可以做接口, 还可以处理上层的输出 ( upstream outputs)。

比如下面的例子:

 代码如下 复制代码
        location /sqlite {
                autoindex on;
                autoindex_localtime on;
        }

/sqlite目录开了autoindex,界面极简单,无任何css和js,想对其做出美化,无从下嘴。

效果图:

最近学习了nginx-lua,突然发现有可行方案了:

           

 代码如下 复制代码
     body_filter_by_lua '
                        local b = ngx.arg[1]
                        --单双引号的问题。 双引号要用\二个斜线转义。 单引号要用一个斜线转义。 前提条件是body_filter_by_lua 后面用的是单引号。
                        ngx.arg[1] = string.gsub( b, "(<head>)", "%1 <link type=\"text/css\" rel='stylesheet' href='/sqlite/css.css'/>")

                ';
通过body_filter_by_lua,可以对 http 输出( ngx.arg[1])进行处理,从而达到附加css文件的目的。
再通过
echo_after_body
就可以方便地在结束之后,附加js代码:

 代码如下 复制代码
set $append_js  "<script src='/bootstrap/js/sqlite.js'></script>";
echo_after_body $append_js;

效果图:

貌似越改越丑了……

PS: echo_after_body 不影响tar.gz文件下载。即:不会在tar.gz文件里面附加东西…否则就无法解压了。
求原理。

时间: 2024-10-31 15:53:41

nginx lua 与 autoindex测试笔记的相关文章

【重要】Nginx模块Lua-Nginx-Module学习笔记(三)Nginx + Lua + Redis 已安装成功(非openresty 方式安装)

源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一. 目标 使用Redis做分布式缓存:使用lua API来访问redis缓存:使用nginx向客户端提供服务,ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求.url请求nginx服务器,然后lua查询redis,返回json数据. 二.准备工作 系统环境:Ubuntu 14.0 (64位) Redis服务安装:apt-get install redi

【精选】Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解

源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一.介绍 各种* _by_lua,* _by_lua_block和* _by_lua_file配置指令用作nginx.conf文件中Lua API的网关. 下面描述的Nginx Lua API只能在这些配置指令的上下文中运行的用户Lua代码中调用.API以两个标准软件包ngx和ndk的形式暴露给Lua. 这些软件包位于ngx_lua中的默认全局范围内,并且始终可在ngx_lua指令中使用. 这些包可以

nginx lua redis 访问频率限制(转)

1. 需求分析 Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等. 用Nginx+Lua+Redis来做访问限制主要是考虑到高并发环境下快速访问控制的需求. Nginx处理请求的过程一共划分为11个阶段,分别是: post-read.server-rewrite.find-config.rewrite.post-rewrite. preaccess.access.post-access.try-files.content.log. 在openre

用Nginx + Lua(OpenResty)开发高性能Web应用

在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡.反向代理.代理缓存.限流等场景;而把Nginx作为一个Web容器使用的还不是那么广泛.Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高;如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把好的瑞士军刀;目前Nginx团队也开始意识到这个问题,开发了nginxScript:可以在Nginx中使用JavaScript进行动态配置一些变量和动态脚本执行;而目前市面上

nginx+lua+redis构建高并发应用(转)

nginx+lua+redis构建高并发应用 ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求. url请求nginx服务器,然后lua查询redis,返回json数据. 备注:centos或者redhat系统请跳转到nginx + ngx_lua安装测试 一.安装lua     1 2 3 # apt-get install lua5.1 # apt-get install liblua5.1-dev # apt-get install libl

【转】使用Nginx+Lua(OpenResty)开发高性能Web应用

在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡.反向代理.代理缓存.限流等场景:而把Nginx作为一个Web容器使用的还不是那么广泛.Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高:如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把好的瑞士军刀:目前Nginx团队也开始意识到这个问题,开发了nginxScript:可以在Nginx中使用JavaScript进行动态配置一些变量和动态脚本执行:而目前市面上

安装Nginx+Lua开发环境_Lua

首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用.借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序.而且OpenResty提供了大量组件如Mysql.Redis.Memcached等等,使在Nginx上开发Web应用更方便更简单.目前在京东如实时价格.秒杀.动态服务.单品页.列表页等都在使用Nginx+Lua架构,其他公司如淘宝.去哪儿网等. 安装环境

nginx lua 安装spdy

关于spdy 摘自 http://zh.wikipedia.org/wiki/SPDY SPDY SPDY是Google开发的基于传输控制协议(TCP)的应用层协议 .Google最早是在Chromium中提出的SPDY协议[1].目前已经被用于Google Chrome浏览器中来访问Google的SSL加密服务. SPDY当前并不是一个标准协议,但SPDY的开发组已经开始推动SPDY成为正式标准(现为互联网草案),Google Chrome,Mozilla Firefox,Opera和Inte

Nginx+Lua+Redis构建高并发Web应用_nginx

本文介绍如何用Nginx+Lua+Redis来构建高并发Web应用,Curl请求Nginx,Nginx通过Lua查询Redis,返回json数据. 一.安装1.安装lua-redis-parser 复制代码 代码如下: #git clone https://github.com/agentzh/lua-redis-parser.git #export LUA_INCLUDE_DIR=/usr/include/lua5.1 #make CC=gcc #make install CC=gcc 2.安