openwrt uhttpd php,Lua作为CGI脚本在OpenWrt上响应uhttpd的http访问

本文介绍了如何在OpenWrt系统中配置uhttpd服务器,使其能够以CGI方式运行Lua脚本。首先,通过编辑'/etc/config/uhttpd'文件,取消lua_prefix和lua_handler的注释并指定lua文件路径。然后,创建一个包含handle_request函数的'http.lua'文件,重启uhttpd服务,通过浏览器访问验证配置。接着,为了使Lua作为CGI解释器,注释掉lua_prefix和lua_handler,启用cgi_prefix,并添加Lua解释器配置。创建'cgi-bin'目录及'date.lua'文件,输出HTTP头和当前日期。最后,重启uhttpd并访问'date.lua'以查看CGI脚本运行结果。注意CGI脚本需包含正确的HTTP头以确保响应正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

uhttpd是OpenWrt上经常使用的、轻量级的响应http申请的web服务器,可以将申请分发给文件、CGI解释器(cgi_prefix,解释器一般为perl或者是php-cgi)或者Lua解释器(lua_prefix)。

由于使用Lua解释器开发时,由lua_handler指定的.lua文件每次修改都需要重新启动uhttpd才能生效,因此将.lua文件作为CGI脚本来调试会方便很多。

这里先以标准的Lua解释器配置为例,看uhttpd如何配置标准的lua_prefix:

编辑文件:“/etc/config/uhttpd”,将其中的:

#option lua_prefix /luci

#option lua_handler

/usr/lib/lua/luci/sgi/uhttpd.lua

去掉符号“#”(即去掉注释),并修改为:

option lua_prefix /lua

option lua_handler /root/http.lua

保存退出(如果使用“vi”编辑,按ESC键,再输入“:x”,回车键即可保存退出)。

请确认存在“/root/http.lua”文件,并且其内容中包含一个名为handle_request函数,内容如下:

#!/usr/bin/lua

function handle_request(env)

uhttpd.send("hello, world")

end

使用命令“/etc/init.d/uhttpd

restart”重新启动uhttpd服务,然后使用浏览器访问“http://{openwrt_ip}/lua/http.lua”,即可以看到.lua文件的响应内容。

下面进入正题,需要配置将Lua当作CGI脚本解释器使用。

编辑文件:“/etc/config/uhttpd”​,将其中的:

​option lua_prefix /lua

option lua_handle /root/uhttpd.lua

在这两行前添加符号“#”(即注释掉这两行)。

并同时将其中的:

option cgi_prefix /cgi-bin​

去掉注释,再添加下面这行:​

list interpreter ".lua=/usr/bin/lua"

保存退出。

请确认存在​“/www/cgi-bin”目录,同时该目录下存在文件“date.lua”,该文件内容如下:

#!/usr/bin/lua

​io.write("Content-type:

text/html\n\n")

io.write(os.date("%x", os.time()))​

重新启动uhttpd服务,然后使用浏览器访问“http://{openwrt_ip}/cgi-bin/date.lua”,即可以看到“date.lua”输出的当前系统的日期。

特别注意:CGI脚本必须要输出“Content-type:

text/html\n\n”,uhttpd才会认为脚本正确进行了响应,才会输出内容到浏览器。​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值