¸üÐÂʱ¼ä:2020Äê03ÔÂ15ÈÕ16ʱ13·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:
1¡¢OpenResty¼ò½é
1.1 Á˽âOpenResty
OpenRestyÊÇÒ»¸ö»ùÓÚ Nginx Óë Lua µÄ¸ßÐÔÄÜ Web ƽ̨£¬ÆäÄÚ²¿¼¯³ÉÁË´óÁ¿¾«Á¼µÄ Lua ¿â¡¢µÚÈý·½Ä£¿éÒÔ¼°´ó¶àÊýµÄÒÀÀµÏî¡£ÓÃÓÚ·½±ãµØ´î½¨Äܹ»´¦Àí³¬¸ß²¢·¢¡¢À©Õ¹ÐÔ¼«¸ßµÄ¶¯Ì¬ Web Ó¦Óá¢Web ·þÎñºÍ¶¯Ì¬Íø¹Ø¡£
¼òµ¥µØËµOpenResty µÄÄ¿±êÊÇÈÃÄãµÄWeb·þÎñÖ±½ÓÅÜÔÚ Nginx ·þÎñÄÚ²¿£¬³ä·ÖÀûÓà Nginx µÄ·Ç×èÈû I/O Ä£ÐÍ£¬²»½ö½ö¶Ô HTTP ¿Í»§¶ËÇëÇó,ÉõÖÁÓÚ¶ÔÔ¶³Ìºó¶ËÖîÈç MySQL¡¢PostgreSQL¡¢Memcached ÒÔ¼° Redis µÈ¶¼½øÐÐÒ»ÖµĸßÐÔÄÜÏìÓ¦¡£ÍƼöÁ˽âÀÖÓã²¥¿ÍjavaÅàѵ¿Î³Ì¡£
1.2 OpenResty°²×°
·ÏÂÔØ¶ÔÓ¦ÄãϵͳµÄOpenResty°æ±¾£ºhttp://openresty.org/cn/download.html
Ö§³Ö mac linux windows

(ÎÒÃÇÏÖÔÚʹÓõÄwindowsƽ̨°æ±¾ÊÇ1.13.6.2)
·Ñ¡Ôñ°²×°Ä¿Â¼(½¨Òé·ÇÖÐÎÄ)½øÐнâѹ
Ë«»÷nginx.exeÔËÐм´¿É

²âÊÔ£º´ò¿ªä¯ÀÀÆ÷·ÃÎÊ localhost

2¡¢¿ìËÙÈëÃÅ
2.1 ¶¯Ì¬Êä³ö
ÎÒÃÇÏÖÔÚ×ö¸ö×î¼òµ¥µÄСÀý×Ó£¬Ê¹ÓÃLua½Å±¾¶¯Ì¬Êä³öÄÚÈÝ£¬´ò¿ªopenresty-1.13.6.2-win64Ŀ¼ÏµÄconf/nginx.confÎļþ
ÔÚserverÖÐÐÂÔöÒÔÏ´úÂë
ÀàËÆÕâÑù
ÏÖÔÚÆô¶¯nginx£¬È»ºó·ÃÎÊ http://localhost/hello£¬Èç¹ûÄã֮ǰÆô¶¯ÁË£¬ÄÇôÐèÒªnginx -s reload

ͨ¹ýngx.say ÎÒÃÇ¿ÉÒÔÍù¿Í»§¶ËÊä³öÏìÓ¦Îı¾£¬ÊDz»ÊǸúÔÛÃÇtomcat response.writeºÜÏñÎûÎû£¬ºóÆÚÎÒÃÇ»áʹÓÃËüÊä³öjson¡£
»¹ÓÐÒ»¸öÊä³öµÄº¯ÊýÊÇngx.print£¬Í¬ÑùÒ²ÊÇÊä³öÏìÓ¦ÄÚÈÝ¡£
2.2 ÓÅ»¯¶¯Ì¬Êä³ö
ÉÏÃæµÄ´úÂëÖ±½Ó°Ñlua´úÂëдµ½nginxÅäÖÃÀïÃæÁË£¬Î¬»¤ÆðÀ´²»ÊǺܷ½±ã£¬ÎÒÃǰÑËüÄóöÀ´Ò»¸öµ¥¶ÀµÄÎļþ£¬²¢·Åµ½openresty-1.13.6.2-win64Ŀ¼ÏÂÃæµ¥¶ÀµÄluaĿ¼Ï£¬·½±ã¹ÜÀí

н¨lua/hello.lua Îļþ£¬²¢±àд´úÂë
ngx.say("<p>hello, world</p>")
nginx.conf ¸Ä³ÉÕâÑù
È»ºónginx -s reload һϣ¬Ò³ÃæÐ§¹ûÊÇÒ»ÑùµÄ

¹Û²ìÒÔÉÏ´úÂëÆäʵ»¹»á·¢ÏÖÒ»¸öÎÊÌ⣬Èç¹ûÎÒÃÇÏëÒª´¦ÀíºÜ¶à¸öÇëÇó£¬ÄDz»ÊÇÒªÔÚnginxÀïÃæÅäÖÃN¸ölocationÂð£¬ÎÒÃǿ϶¨²»»áÕâô×ö£¬ÕâÀï¿ÉÒÔͨ¹ýnginx¶¯Ì¬Æ¥ÅäÖ¸¶¨luaÎļþÃû¡£
nginx.conf ¸Ä³ÉÕâÑù
н¨lua/itheima.lua Îļþ£¬²¢±àд´úÂë
ngx.print("<p>hello,itheima</p>")
È»ºónginx -s reload Ò»ÏÂ
Õâ¸öʱºò·ÃÎÊhello worldµÄÇëÇóurl¾Í±ä³ÉÁË http://localhost/lua/hello ÁË
ͬÀí£¬ÎÒÃÇÔÚluaÎļþÀïÃæ´´½¨Ò»¸öitheima.lua£¬¾Í¿ÉÒÔͨ¹ý http://localhost/lua/itheima À´·ÃÎÊÁË
2.3 ½ÓÊÕ²ÎÊý
ÎÒÃÇÖªµÀhttpÇëÇóͨ³£·ÖΪÁ½ÖÖ£¬·Ö±ðÊÇGET£¬POST£¬ÔÚhttpÐÒéÖУ¬GET²ÎÊýͨ³£»á½ô¸úÔÚuriºóÃæ£¬¶øPOSTÇëÇó²ÎÊýÔò°üº¬ÔÚÇëÇóÌåÖС£
ʹÓÃOpenResty»ñÈ¡ÇëÇó²ÎÊýµÄ·½·¨Ò²ÓжþÖÖ,ΪÁËͳһ»ñÈ¡ÇëÇó²ÎÊýµÄ·½Ê½£¬Òþ²Ø¾ßÌåϸ½Ú£¬Ìṩһ¸ö¸üÓѺõÄapi½Ó¿Ú£¬ÎÒÃÇ¿ÉÒÔ¼òµ¥µÄ·â×°Ò»ÏÂ
´´½¨lua/req.lua Îļþ
Õâ¸öÄ£¿é¾ÍʵÏÖÁ˲ÎÊýµÄ»ñÈ¡£¬¶øÇÒÖ§³Ö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£¬·ñÔò»áÕÒ²»µ½ÒýÈëµÄÄ£¿é£¬È»ºó»á500
server {
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>")
È»ºónginx -s reload Ò»ÏÂ
·ÃÎÊ http://localhost/lua/test?name=jack

ÏìÓ¦¿Í»§¶ËĬÈϵIJÎÊý
3¡¢×ܽá
±¾´ÎÖ÷Òª½²½âÁËOpenRestyÔÚwindow»·¾³Ïµİ²×°¼°Ê¹Óá£Í¨¹ý±¾ÆªÎÄÕÂÏ£Íû´ó¼Ò¿ÉÒÔ¼òµ¥ÕÆÎÕOpenResty½ÓÊÕÒ³ÃæÇëÇó²ÎÊý¼°¶¯Ì¬Êä³öÄÚÈÝ£¬ºóÐø½«¸ø´ó¼Ò´øÀ´»ñÈ¡´Óredis»ñÈ¡Êý¾Ý²¢ÒÔjson¸ñʽÏìÓ¦¸ø¿Í»§¶Ë¡£
²ÂÄãϲ»¶
°Ù¶ÈLBSÔÆÊ¹Óý̳Ì:°Ù¶ÈLBSÔÆÔõôÓÃ?
±±¾©Ð£Çø