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

最新文章

  1. Mysql远程访问
  2. cookie详解
  3. CSS优化技巧
  4. C# where(泛型类型约束)
  5. mysql server install
  6. MP3文件结构及解码概述
  7. Autolayout 第三方开源库
  8. jsp页面中从forEach里向action里面传递其中的一个对象
  9. Q:javax.comm 2.0 windows下Eclipse的配置
  10. Findbug在项目中的运用--提高代码质量
  11. [ Java面试题 ]数据库篇
  12. Java 学习笔记 (一) If 语句
  13. 《玩转Django2.0》读书笔记-Django建站基础
  14. Centos7 多网卡抓包可以抓到UDP但程序recvfrom不到
  15. Spring Security 用户认证原理分析
  16. BSGS-Junior·大步小步算法
  17. Array.prototype.map()和Array.prototypefilter()
  18. Kafka 0.8 副本同步机制理解
  19. C# 地磅串口编程
  20. 使用grep恢复被删文件内容

热门文章

  1. 机器人走方格-51nod解题
  2. Kubernetes 普及系列:容器基础入门
  3. Python模块化编程
  4. 工具tip
  5. HellowWorld详解
  6. 阿里云短信服务 PHP
  7. linux命令解压压缩rar文件
  8. opencv——感兴趣区域(ROI)的分析和选取[详细总结]
  9. IO异步,读写压缩文件,监控文件系统
  10. Python分支结构你真的搞定了吗?