第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

OpenResty快速入門

標簽:
Html5

1 OpenResty简介

1.1 了解OpenResty

OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

简单地说OpenResty 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模

型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

1.2 OpenResty安装

https://img1.sycdn.imooc.com/1bf2b7680850e6e714910852.jpg


下载对应你系统的OpenResty版本:支持 mac linux windows

(我们现在使用的windows平台版本是1.13.6.2)

选择安装目录(建议非中文)进行解压双击nginx.exe运行即可

https://img1.sycdn.imooc.com/95311d680850e6e711900708.jpg


测试:打开浏览器访问 localhost

https://img1.sycdn.imooc.com/f9c56b680850e6e811120388.jpg


2 快速入门


2.1 动态输出

我们现在做个最简单的小例子,使用Lua脚本动态输出内容,打开openresty-1.13.6.2-win64目录下的

conf/nginx.conf文件

在server中新增以下代码

location /hello { default_type text/html;content_by_lua 'ngx.say("<p>hello, world</p>")';
}

类似这样

http {server {listen 80; server_name localhost; location / {default_type text/html;content_by_lua 'ngx.say("<p>hello, world</p>")';
}
}
}

https://img1.sycdn.imooc.com/5718ee680850e6e807630125.jpg


nginx -s reload现在启动nginx,然后访问http://localhost/hello ,如果你之前启动了,那么需要nginx -s reload

通过ngx.say 我们可以往客户端输出响应文本,是不是跟咱们tomcat response.write很像嘻嘻,后期我们会使用它输出json

还有一个输出的函数是ngx.print,同样也是输出响应内容

2.2 优化动态输出

上面的代码直接把lua代码写到nginx配置里面了,维护起来不是很方便,我们把它拿出来一个单独的文件,并 放到openresty-1.13.6.2-win64目录下面单独的lua目录下,方便管理

https://img1.sycdn.imooc.com/2f9c02680850e6e807900506.jpg


ngx.say("<p>hello, world</p>")

nginx.conf 改成这样

location / {default_type text/html; 
  content_by_lua_file lua/hello.lua;
}

然后nginx -s reload一下,页面效果是一样的

https://img1.sycdn.imooc.com/5718ee680850e6e807630125.jpg


观察以上代码其实还会发现一个问题,如果我们想要处理很多个请求,那不是要在nginx里面配置N个location 吗,我们肯定不会这么做,这里可以通过nginx动态匹配指定lua文件名

nginx.conf 改成这样

location ~ /lua/(.+) { content_by_lua_file lua/$1.lua;
}

新建lua/itheima.lua 文件,并编写代码

ngx.print("<p>hello,itheima</p>")

https://img1.sycdn.imooc.com/d5ef71680850e6e806960106.jpg


2.3 接收参数

我们知道http请求通常分为两种,分别是GET,POST,在http协议中,GET参数通常会紧跟在uri后面,而

POST请求参数则包含在请求体中

使用OpenResty获取请求参数的方法也有二种,为了统一获取请求参数的方式,隐藏具体细节,提供一个更友 好的api接口,我们可以简单的封装一下

创建lua/req.lua 文件

local _M = {}-- 获取http get/post 请求参数function _M.getArgs()-- 获取http请求方式 GET or POSTlocal request_method = ngx.var.request_method-- 这里是一个table,包含所有get请求参数local args = ngx.req.get_uri_args()-- 如果是post参数获取if "POST" == request_method then-- 先读取请求体ngx.req.read_body()-- 这里也是一个table,包含所有post请求参数local postArgs = ngx.req.get_post_args() if postArgs thenfor k, v in pairs(postArgs) do args[k] = vendendendreturn argsendreturn _M

这个模块就实现了参数的获取,而且支持GET,POST两种传参方式

接下来我们可以写一个简单的lua,来引入这个模块,然后测试一下效果

conf/nginx.conf 需要添加

http {lua_package_path C:\Users\Ys\Desktop\openresty\openresty-1.13.6.2-win64\lua\?.lua; # 这里一定要指定package_path,否则会找不到引入的模块,然后会500server {listen 80; 
server_name localhost;lua_code_cache off;location ~ /lua/(.+) {default_type text/html; 
  content_by_lua_file lua/$1.lua;
}
}
}

创建lua/test.lua 文件

-- 引入req模块local req = require "req"-- 获取请求参数列表local args = req.getArgs()-- 获取key为name的值local name = args['name']-- 如果不存在指定默认值if name == nil or name == "" then name = "xiaozhi"end-- 输出结果ngx.say("<p>hello " .. name .. "!</p>")

然后下面这步骤

https://img1.sycdn.imooc.com/8115bc680850e6e806500120.jpg


https://img1.sycdn.imooc.com/5b8829680850e6e907870190.jpg

                                                  老富贵论坛

3 总结

本次主要讲解了OpenResty在window环境下的安装及使用。通过本篇文章希望大家可以简单掌握OpenResty 接收页面请求参数及动态输出内容,后续将给大家带来获取从redis获取数据并以json格式响应给客户端


點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消