OpenResty快速入门
我們希望達到的多級緩存架構(gòu)如圖:
其中:
-
windows上的nginx用來做反向代理服務,將前端的查詢商品的ajax請求代理到OpenResty集群
-
OpenResty集群用來編寫多級緩存業(yè)務
反向代理流程
現(xiàn)在,商品詳情頁使用的是假的商品數(shù)據(jù)。不過在瀏覽器中,可以看到頁面有發(fā)起ajax請求查詢真實商品數(shù)據(jù)。
這個請求如下:
請求地址是localhost,端口是80,就被windows上安裝的Nginx服務給接收到了。然后代理給了OpenResty集群:
我們需要在OpenResty中編寫業(yè)務,查詢商品數(shù)據(jù)并返回到瀏覽器。
但是這次,我們先在OpenResty接收請求,返回假的商品數(shù)據(jù)。
OpenResty監(jiān)聽請求
OpenResty的很多功能都依賴于其目錄下的Lua庫,需要在nginx.conf中指定依賴庫的目錄,并導入依賴:
1)添加對OpenResty的Lua模塊的加載
修改/usr/local/openresty/nginx/conf/nginx.conf文件,在其中的http下面,添加下面代碼:
#lua 模塊 lua_package_path "/usr/local/openresty/lualib/?.lua;;"; #c模塊 lua_package_cpath "/usr/local/openresty/lualib/?.so;;";2)監(jiān)聽/api/item路徑
修改/usr/local/openresty/nginx/conf/nginx.conf文件,在nginx.conf的server下面,添加對/api/item這個路徑的監(jiān)聽:
location /api/item {# 默認的響應類型default_type application/json;# 響應結(jié)果由lua/item.lua文件來決定content_by_lua_file lua/item.lua; }這個監(jiān)聽,就類似于SpringMVC中的@GetMapping("/api/item")做路徑映射。
而content_by_lua_file lua/item.lua則相當于調(diào)用item.lua這個文件,執(zhí)行其中的業(yè)務,把結(jié)果返回給用戶。相當于java中調(diào)用service。
編寫item.lua
1)在/usr/loca/openresty/nginx目錄創(chuàng)建文件夾:lua
2)在/usr/loca/openresty/nginx/lua文件夾下,新建文件:item.lua
3)編寫item.lua,返回假數(shù)據(jù)
item.lua中,利用ngx.say()函數(shù)返回數(shù)據(jù)到Response中
ngx.say('{"id":10001,"name":"SALSA AIR","title":"RIMOWA 21寸托運箱拉桿箱 SALSA AIR系列果綠色 820.70.36.4","price":17900,"image":"https://m.360buyimg.com/mobilecms/s720x720_jfs/t6934/364/1195375010/84676/e9f2c55f/597ece38N0ddcbc77.jpg!q70.jpg.webp","category":"拉桿箱","brand":"RIMOWA","spec":"","status":1,"createTime":"2019-04-30T16:00:00.000+00:00","updateTime":"2019-04-30T16:00:00.000+00:00","stock":2999,"sold":31290}')?4)重新加載配置
nginx -s reload刷新商品頁面:http://localhost/item.html?id=1001,即可看到效果:
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的OpenResty快速入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初识Lua
- 下一篇: OpenResty请求参数处理