星标公众号,让嵌入式知识 “投喂” 不停歇!

嵌入式 web 服务器就是把 web 服务器移植到嵌入式系统的服务器。它仍然是基于http文本协议进行通信的,具有标准的接口形式,对客户端来说,访问嵌入式 web服务器就和访问普通的web 服务一样。

我们在实际工作中也有在板子上搭建web服务器,给我们调试带来了一些便利,可以通过网页与板子进行交互,板子在没有显示屏的情况下,也可以作为一种方案来进行功能展示。

一、核心约束

嵌入式环境与服务器环境不同,嵌入式设备有三个硬性约束:

约束维度
典型指标
内存
8MB ~ 128MB
CPU
100MHz ~ 1GHz
存储
4MB ~ 32MB Flash

传统服务器的设计哲学是”功能全面 + 可扩展性”,而嵌入式服务器追求”够用 + 极致精简”。

二、常见嵌入式 Web 服务器

2.1 NGINX

NGINX是服务器端王者,嵌入式场景能用吗?

很多人认为 NGINX 只适合服务器,但实际上它在高性能嵌入式设备(如智能网关、边缘计算盒子)上表现优秀,适合中高端嵌入式设备(如 Cortex-A53/A72)。

http:///download/nginx-1.24.0.tar.gz

NGINX 依赖 pthread、zlib 等库,若嵌入式系统未预装,需手动移植。

NGINX 采用 “master 进程 + worker 进程 + 事件驱动” 模型,并发能力远强于 Boa,但资源开销也更大。

嵌入式裁剪编译

裁剪版:~350KB

内存占用优化配置

2.2 Boa

Boa是单进程高性能的”老兵”。Boa 是老牌单线程异步 Web 服务器,曾经的嵌入式 “标配”,核心优势是极致小巧(编译后仅几十 KB),但早已停止维护(最后版本停留在 2005 年)。

http://www./

Boa 采用 “单进程 + 非阻塞 I/O + 事件驱动” 模型,类比成 “一个服务员同时接待多个顾客,只处理有需求的顾客,不一直等着”,但因为单线程,高并发下会出现响应延迟。

使用boa需要配置boa.conf文件,最简配置如:

echo "Port 80
User 0
Group 0
DocumentRoot /var/www
ServerName EmbeddedBoa
CGIPath /bin:/usr/bin:/sbin:/usr/sbin" > boa.conf

设计一个简单的网页如:

嵌入式设备上启动boa服务:

boa 进程启动成功后,在浏览器中输入我们开发板的 IP 地址就可以访问到 index.html 网页:

boa适用场景

  • 内存 < 32MB 的设备(如 OpenWrt 路由器)
  • 只需要静态页面 + CGI 的场景

不适用的场景:

  • 不支持 HTTPS,若产品需要加密传输,需额外集成 OpenSSL,适配成本高。

2.3 Thttpd

Thttpd 是单进程多线程(可选)的轻量级服务器,核心优势是静态页面处理速度快、资源占用低(编译后~100KB),支持虚拟主机、URL 重写,仍有少量社区维护。

热门嵌入式 WEB 服务器对比!

https://www.oschina.net/p/thttpd?hmsr=aladdin1e1

独到之处

  • 内置 URL 流量控制,防止下载文件耗尽带宽
  • 支持 IPv6 和虚拟主机
  • 代码只有 6000 行,适合定制

局限:

对动态 CGI 支持较弱,不支持 HTTPS。

2.4 Mini_httpd

Mini_httpd 是超轻量级服务器(编译后仅~50KB),支持 CGI、SSI、HTTPS(集成 OpenSSL),代码量少(仅几千行),易修改和移植,适合资源极度受限的场景。

https://www.oschina.net/p/mini-httpd

# 典型配置
./mini_httpd -p 8080 -d /www -c "**.cgi" -u root

对比 Thttpd

特性
Thttpd
Mini_httpd
二进制大小
~120KB
~80KB
内存占用
~800KB
~600KB
HTTPS
支持
支持

2.5 Lighttpd

Lighttpd(又称 “小灯”)是事件驱动的轻量级服务器,核心优势是功能全面 + 资源适中(编译后~200KB),支持 CGI、FastCGI、HTTPS、gzip 压缩,社区活跃度高。

http://www./

主要特性:

  • 轻量级:安装包小,运行时内存占用少,非常适合资源受限的环境(如嵌入式系统、旧硬件、低配VPS)。

  • FastCGI支持出色:它是早期对FastCGI支持最好的服务器之一,与PHP(通过php-fpmphp-cgi)配合非常高效,曾是很多PHP应用的高性能选择。

  • URL重写:提供了强大的mod_rewrite模块,规则灵活。

  • 静态文件服务高效:对于发送图片、CSS、JS等静态文件,性能极佳,并支持高效的sendfile系统调用。

  • 模块化:功能通过模块加载,可以根据需要启用或禁用,保持核心精简。

  • 安全性:代码库小,历史安全漏洞相对较少,被普遍认为比较安全。

Lighttpd与Nginx的设计哲学相似(事件驱动、高性能、低消耗),常被拿来比较。Lighttpd像一个专注的“特种兵”,在它擅长的领域(高并发连接、低资源消耗)极其出色。而Nginx更像一个功能全面的“多面手”,适用性更广。

适用场景

需要 PHP/Python 支持的复杂 Web 应用,如网络摄像头的管理界面。

配置示例

2.6 Appweb

Appweb 是专为嵌入式设计的工业级服务器,支持 HTTP/2、HTTPS、WebSocket、RESTful API,核心优势是稳定性高 + 适配性强,但部分功能需商业授权(开源版足够嵌入式基础使用)。

核心优势

  • 内置 嵌入式数据库(SQLite)支持
  • 提供 ESP(嵌入式服务器页面),类似 JSP
  • 原生支持 TLS 1.3 和双向认证

ESP 示例(动态生成设备状态页面):

适用场景

  • 工业控制系统(需要安全认证)
  • 需要快速开发复杂 Web 界面的项目

三、对比

3.1 资源占用对比

3.2 功能特性对比

3.3 决策树