uHTTPd
uHTTPd 是一个 OpenWrt/LUCI 开发者从头编写的 Web 服务器。 它着力于实现一个稳定高效的服务器,能够满足嵌入式设备的轻量级任务需求,且能够与 OpenWrt 的配置框架 (UCI) 整合。默认情况下它被用于 OpenWrt 的 Web 管理接口 LuCI。 当然,uHTTPd 也能提供一个常规 Web 服务器所需要的所有功能。
其源代码可在以下 git 存储库中找到:
特性
uHTTPd 作为一个通用的 HTTP 服务,并不只满足于运行 OpenWrt 的 Web 管理界面,而是提供了媲美其他现代 Web 服务器的功能。这包括 TLS (SSL)、CGI 以及 Lua。uHTTPd 是单线程的,但是支持多个实例 (例如,支持监听多个端口,每个端口都可以使用独立的文档根目录以及其他功能)。
uHTTPd is built by default (since r35295 in Jan2013) to support the usage of TLS (HTTPS) via a libustream-* SSL library (on top of an actual SSL library: mbedtls (formerly polarssl), openssl, wolfssl (formerly cyassl)).
Previously the package uhttpd-mod-tls
was required, but it is not needed any more as long as you have installed a libustream library variant.
In Dec2016 luci-ssl installed by default libustream-mbedtls.
自2020 年 8 月起,luci-ssl 切换到 WolfSSL,默认安装 libustream-wolfssl。
与其他很多 Web 服务器相比, uHTTPd 支持进程内执行 Lua,可以提高 Lua CGI 脚本的执行效率。需要注意的是,LuCI,虽然依赖于 Lua,默认并不是以此方式配置的。
安装
uHTTPd 虽然是 OpenWrt 的标准 HTTP 服务器,但不包含在 OpenWrt 的主分支的发行版固件中。它的包名是 uhttpd
。需要使用以下命令进行安装:
opkg update opkg install uhttpd
此外,可以通过安装 LuCI Web 界面以将 uHTTPd 作为其一个依赖包来安装。此方法会同时安装 LuCI 管理 OpenWrt 设备所必要的包,请参考 LuCI 在 uHTTPd 上的配置。当然也可以用其他 Web 服务器来配置 Web 界面。
配置
uHTTPd 的配置自 OpenWrt 10.03 (Backfire) 开始便很好地与 OpenWrt 的 uci 集成在一起。它的 UCI 配置文件为 /etc/config/uhttpd
。uHTTPd 直接依赖于此文件,不再需要其它通过 UCI 生成的配置文件 (然而其它很多程序都需要这样做,例如 Samba)。uHTTPd 通过 UCI 进行配置,请参考通过 UCI 配置 uHTTPd.
uHTTPd 提供了一个启动脚本 /etc/init.d/uhttpd 以控制服务的运行状态,并运行在 OpenWrt 启动时启动。
Using the default installation for publishing files
One could use the default installation for publishing files. A quick example is to disable the redirect to luci scripts.
mv /www/index.html /www/index.html.orig
Done this anything is shown as list of file and even symbolic links works.