ÀÖÓãµç¾º

½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

OpenResty¼ò½é£ºOpenResty¿ìËÙÈëÃŽ̳Ì

¸üÐÂʱ¼ä: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

OpenResty½éÉÜ01

(ÎÒÃÇÏÖÔÚʹÓõÄwindowsƽ̨°æ±¾ÊÇ1.13.6.2)

·Ñ¡Ôñ°²×°Ä¿Â¼(½¨Òé·ÇÖÐÎÄ)½øÐнâѹ

Ë«»÷nginx.exeÔËÐм´¿É

OpenResty½éÉÜ02


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

OpenResty½éÉÜ04-1

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>")';
        }
    }
}

ÏÖÔÚÆô¶¯nginx£¬È»ºó·ÃÎÊ http://localhost/hello£¬Èç¹ûÄã֮ǰÆô¶¯ÁË£¬ÄÇôÐèÒªnginx -s reload

OpenResty¼ò½é05


ͨ¹ýngx.say ÎÒÃÇ¿ÉÒÔÍù¿Í»§¶ËÊä³öÏìÓ¦Îı¾£¬ÊDz»ÊǸúÔÛÃÇtomcat response.writeºÜÏñÎûÎû£¬ºóÆÚÎÒÃÇ»áʹÓÃËüÊä³öjson¡£

»¹ÓÐÒ»¸öÊä³öµÄº¯ÊýÊÇngx.print£¬Í¬ÑùÒ²ÊÇÊä³öÏìÓ¦ÄÚÈÝ¡£

2.2 ÓÅ»¯¶¯Ì¬Êä³ö

ÉÏÃæµÄ´úÂëÖ±½Ó°Ñlua´úÂëдµ½nginxÅäÖÃÀïÃæÁË£¬Î¬»¤ÆðÀ´²»ÊǺܷ½±ã£¬ÎÒÃǰÑËüÄóöÀ´Ò»¸öµ¥¶ÀµÄÎļþ£¬²¢·Åµ½openresty-1.13.6.2-win64Ŀ¼ÏÂÃæµ¥¶ÀµÄluaĿ¼Ï£¬·½±ã¹ÜÀí

OpenResty¼ò½é16

н¨lua/hello.lua Îļþ£¬²¢±àд´úÂë

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

nginx.conf ¸Ä³ÉÕâÑù

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

È»ºónginx -s reload һϣ¬Ò³ÃæÐ§¹ûÊÇÒ»ÑùµÄ

OpenResty¼ò½é05

¹Û²ìÒÔÉÏ´úÂëÆäʵ»¹»á·¢ÏÖÒ»¸öÎÊÌ⣬Èç¹ûÎÒÃÇÏëÒª´¦ÀíºÜ¶à¸öÇëÇó£¬ÄDz»ÊÇÒªÔÚ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>")

È»ºó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 Îļþ

local _M = {}
-- »ñÈ¡http get/post ÇëÇó²ÎÊý
function _M.getArgs()
        -- »ñÈ¡httpÇëÇó·½Ê½ GET or POST
       local 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 then
                  for k, v in pairs(postArgs) do
                       args[k] = v
                  end
           end
      end
      return args
end

return _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£¬·ñÔò»áÕÒ²»µ½ÒýÈëµÄÄ£¿é£¬È»ºó»á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

OpenResty¼ò½é


ÏìÓ¦¿Í»§¶ËĬÈϵIJÎÊý

3¡¢×ܽá

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


²ÂÄãϲ»¶

°Ù¶ÈLBSÔÆÊ¹Óý̳Ì:°Ù¶ÈLBSÔÆÔõôÓÃ?

0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿