博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
openresty(nginx+lua)学习小记
阅读量:6413 次
发布时间:2019-06-23

本文共 2540 字,大约阅读时间需要 8 分钟。

hot3.png

出于技术储备的目的研究了下openresty,恩,收获不小,有一种在旧衣服里找到钱的快感,简单记录下自己可能会用到的知识点,做个备忘。

###安装 仅限于Mac OSX系统,其他系统安装方式自行搜索

//推荐brew tap homebrew/nginxbrew install homebrew/nginx/openresty

or

brew install nginx-full --with-lua-module

###学习前准备 nginx.conf打开日志,方便查看lua脚本或配置本身的错误

access_log  /usr/local/var/log/nginx/access.log;    error_log   /usr/local/var/log/nginx/error.log;

nginx配置和lua脚本变化监听并重启nginx的程序,不然每次手动重启略麻烦,这里有一个的

package mainimport (    "log"    "os/exec"    "github.com/fsnotify/fsnotify")func main() {    watcher, err := fsnotify.NewWatcher()    if err != nil {        log.Fatal(err)    }    defer watcher.Close()    done := make(chan bool)    go func() {        for {            select {            case event := <-watcher.Events:                log.Println("event:", event)                if event.Op&fsnotify.Write == fsnotify.Write {                    log.Println("modified file:", event.Name)                }                nginx()            case err := <-watcher.Errors:                log.Println("error:", err)            }        }    }()    err = watcher.Add("/path/to/file1")    if err != nil {        log.Fatal(err)    }    err = watcher.Add("/path/to/file2")//也可以监听文件夹    if err != nil {        log.Fatal(err)    }    <-done}func nginx() {    cmd := exec.Command("/usr/local/bin/lunchy", "restart", "nginx") //重启命令根据自己的需要自行调整    cmd.Run()}

###hello,world 在nginx.conf加一段配置

server {    listen 18080;    location / {            default_type text/html;            content_by_lua_block {                ngx.say("hello,world")            }    }}

lua文件版

server {    listen 18080;    location / {            default_type text/html;            content_by_lua_file /path/to/nginx.lua;        }}

nginx.lua

ngx.say("hello,world")

###lua开发准备 首先安装一个库,使用opm,openresty的包管理工具,其他的库用opm搜索。

opm install p0pr0ck5/lua-resty-cookie//注意包的安装路径,待会要用

修改下server的配置,配置lua的package path。

lua_package_path "/usr/local/Cellar/openresty/1.11.2.2_2/site/lualib/resty/?.lua;;";server {    listen 18080;    location / {            default_type text/html;            content_by_lua_file /path/to/nginx.lua;        }}

###一两个web操作

-- COOKIElocal ck = require("cookie")local cookie, err = ck:new()local field, err = cookie:get("c")cookie:set({key = "Age", value = "2333333",})-- GETlocal arg = ngx.req.get_uri_args()ngx.say(arg.a)for k,v in pairs(arg) do    ngx.say("[GET ] key:", k, " v:", v)end

###openresty能干什么 在我自己的想法里,我会用它来做灰度发布、限流、参数安全校验、api网关,当然openresty能做的事情很多。

lua很有意思。

nginx真好玩。

更多架构、PHP、GO相关踩坑实践技巧请关注我的公众号:PHP架构师

参考资料

转载于:https://my.oschina.net/u/222608/blog/884057

你可能感兴趣的文章
领域驱动设计实战—基于DDDLite的权限管理OpenAuth.net
查看>>
去掉tomcat配置文件中的注释选项
查看>>
JavaScript—数组(17)
查看>>
工信部:云计算将成新一代信息技术发展重点
查看>>
配置SCCM 2012 SP1(六)发布应用程序
查看>>
《safe+》离线密码更安全,一键修改最方便
查看>>
正则表达式简明参考
查看>>
两数组最小距离问题
查看>>
DB2各版本下载地址
查看>>
老李秘技:loadrunner回放脚本错误提示Error: "HTTP Status-Code 500"
查看>>
配置iscsl服务,编写udev规则,配置并访问NFS共享,配置FreeNAS服务
查看>>
java后台框架 springmvc mybatis(sqlsever oracle 和 mysql数据库) HTML5 bootstrap 全新高大尚...
查看>>
ReportNG 支持中文处理技巧
查看>>
Java 面向对象 之 多态实例2
查看>>
Linux 的发展基本知识及哲学思想
查看>>
PHP 随机用户名账号的生成
查看>>
地址解析协议ARP
查看>>
RC 和 Beta认识
查看>>
输入一串随机数字,然后按千分位输出。
查看>>
流程控制案例
查看>>