openresty 学习笔记小结:综合应用实例

这个综合实验实现的功能其实很简单,用户访问一个页面,显示一个默认页面。输入参数(post或者get都可以),如果参数在数据库查询得到并满足一定条件,根据数据库记录的类型调转到不同页面,并记录下访问者的IP并记录到数据库,参数不符合要求返回默认页面。

其实也就用到之前记录下的那些功能点,这个实验也就被用在本网的www入口

用图说话,具体流程:

简单的说,其实就是先看session有无记录,没有看传入参数后先查redis有无记录,没有则查mysql,查完mysql数据处理后都缓存回redis,那么下次再查该数据就可以在redis查到了。至于获取数据后处理完毕都是经过rabbitMQ发送消息再由python写入mysql。
lua程序只有第一次读取该数据的时候需要操作mysql,其他情况都是只操作redis和rabbitMQ。确保lua的高性能得以发挥。

程序目录是如下:

/home/lua/
└── homePage
├── access.lua
├── assets
│ ├── css
│ │ ├── error-style.css
│ │ ├── index-style.css
│ │ └── style.css
│ └── favicon.ico
├── channelOne.lua
├── channelTwo.lua
├── common
│ ├── getArgs.lua
│ ├── getIp.lua
│ ├── myRabbitmq.lua
│ ├── myRedis.lua
│ └── mysqlPool.lua
├── config
│ └── config.lua
├── error.lua
├── index.lua
├── router.lua
└── view
├── channelOne.html
├── channelTwo.html
├── error.html
├── footer.html
├── header.html
└── index.html

assets 文件夹下放置静态资源文件
view 是页面的视图,使用了template这个库
common 是一些封装好的方法
access.lua 是入口鉴权
router 只是简单的根据鉴权结果分配到不同的页面
index.lua,error.lua,channelOne.luachannelTwo.lua 都是些简单的页面

用到的lua库有

/usr/local/openresty/lualib/resty/
├── template.lua
├── upload.lua
├── mysql.lua
├── rabbitmqstomp.lua
├── redis.lua
├── session

主要的 nginx 配置

http
{
lua_package_path "/usr/local/openresty/lualib/?.lua;/home/lua/?.lua;";
lua_package_cpath "/usr/local/openresty/lualib/?.so;";
lua_shared_dict limit 10m;
lua_shared_dict jsjump 10m; server
{
listen 80 default_server;
server_name localhost;
set $SERVER_DIR homePage;
set $BASE_PATH /home/lua/$SERVER_DIR;
set $template_root $BASE_PATH/view; location / {
default_type text/html;
lua_code_cache on;
access_by_lua_file $BASE_PATH/access.lua;
content_by_lua_file $BASE_PATH/router.lua;
} location @error {
default_type text/html;
lua_code_cache on;
content_by_lua_file $BASE_PATH/error.lua;
} location ~ .*\.(js|css|woff|ttf|svg|ico)$ {
root $BASE_PATH/assets;
}
}

另外还有python程序

/home/python/
├── IPGetPlaceDaemon
│ ├── config.cfg
│ ├── daemon.py
│ └── ipGetPlace.py
└── RedisSyncMysqlDaemon
├── config.cfg
├── daemon.py
└── redisSyncMysql.py

openresty 学习笔记小结:综合应用实例的更多相关文章

  1. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

  2. input子系统学习笔记六 按键驱动实例分析下【转】

    转自:http://blog.chinaunix.net/uid-20776117-id-3212095.html 本文接着input子系统学习笔记五 按键驱动实例分析上接续分析这个按键驱动实例! i ...

  3. ArcGIS案例学习笔记-中国2000坐标转换实例

    ArcGIS案例学习笔记-中国2000坐标转换实例 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:西安1980.中国2000.WGS84(GPS)等任意坐标系 ...

  4. ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试

    http://www.cnblogs.com/denny402/p/5852983.html ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试   刚开始学习tf时,我们从 ...

  5. openresty 学习笔记六:使用session库

    openresty 学习笔记六:使用session库 lua-resty-session 是一个面向 OpenResty 的安全和灵活的 session 库,它实现了 Secure Cookie Pr ...

  6. openresty 学习笔记番外篇:python的一些扩展库

    openresty 学习笔记番外篇:python的一些扩展库 要写一个可以使用的python程序还需要比如日志输出,读取配置文件,作为守护进程运行等 读取配置文件 使用自带的ConfigParser模 ...

  7. openresty 学习笔记番外篇:python访问RabbitMQ消息队列

    openresty 学习笔记番外篇:python访问RabbitMQ消息队列 python使用pika扩展库操作RabbitMQ的流程梳理. 客户端连接到消息队列服务器,打开一个channel. 客户 ...

  8. openresty 学习笔记五:访问RabbitMQ消息队列

    openresty 学习笔记五:访问RabbitMQ消息队列 之前通过比较选择,决定采用RabbitMQ这种消息队列来做中间件,目的舒缓是为了让整个架构的瓶颈环节.这里是做具体实施,用lua访问Rab ...

  9. openresty 学习笔记四:连接mysql和进行相关操作

    openresty 学习笔记四:连接mysql和进行相关操作 毕竟redis是作为缓存,供程序的快速读写,虽然reidis也可以做持久化保存,但还是需要一个做数据存储的数据库.比如首次查询数据在red ...

随机推荐

  1. istio1.2.2 安装及使用示例

    前言 本文介绍istio的安装及使用 dashboard,grafana,prometheus,kiali,jaeger的配置示例.演示通过istio的ingressgateway统一访问入口 Ist ...

  2. 无所不能的PowerMock,mock私有方法,静态方法,测试私有方法,final类

    1.为什么要用mock 我的一本书的解释: (1)创建所需的DB数据可能需要很长时间,如:调用别的接口,模拟很多数据 (2)调用第三方API接口,测试很慢, (3)编写满足所有外部依赖的测试可能很复杂 ...

  3. 07- Linux常用命令

    cat命令 作用:将文件内容作为标准输出打印到终端. 格式:cat   文件名1  文件名2 例如: cat more命令: 作用:分页显示文本文件的内容 格式:more 文件名 实例:more he ...

  4. ip协议是哪一层的协议

    IP协议对应于OSI标准模型的网络层. TCP/IP: 数据链路层:ARP,RARP 网络层: IP,ICMP,IGMP 传输层:TCP ,UDP,UGP 应用层:Telnet,FTP,SMTP,SN ...

  5. Python 巡检接入钉钉机器人

    前段时间,为了快速实现巡检服务器设备的健康状态,我简单的写了一个巡检工具,该工具已经可以满足我的大部分需求了,不过,每次都要自己手动去点击巡检才能知道今天设备的状态,由于每天巡检严重影响我学习逆向技术 ...

  6. 编译libdvm.so: makefile,mm

    操作系统:Ubuntu14.4 android版本:4.4 设备:nexus 5 android系统的编译使用make来操作,那make呢是执行对应的makefile即android的编译系统看mak ...

  7. 使用 WinAFL 图片解析软件进行模糊测试 - FreeImage 图片解析库

    看雪链接:https://bbs.pediy.com/thread-255162.htm

  8. Intel汇编语言程序设计学习-第二章 IA-32处理器体系结构-下

    2.2  IA-32处理器体系结构 如前所述,IA-32是指始于Intel386直到当前最新的奔腾4的系列的处理器(额...这本书是什么时候写的啊,表示现在应该是I7啊),在IA-32的发展过程中,I ...

  9. 【python】Leetcode每日一题-二叉搜索迭代器

    [python]Leetcode每日一题-二叉搜索迭代器 [题目描述] 实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterator(T ...

  10. 联想R720Y空间问题

    由于之前Y空间在启动项中,所以将他关闭,这次想找到他却找不到 备注:因为在解决问题前,没有把图片保存下来,所以下面用一个颜色框挡住,表示之前的效果 第一个问题 在电脑上找到Y空间 百度上很多说在开始中 ...