• Stars
    star
    384
  • Rank 111,726 (Top 3 %)
  • Language
    C
  • License
    MIT License
  • Created about 7 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A very flexible, lightweight and high performance HTTP server library based on libev and http-parser for Embedded Linux.

libuhttpd(中文)

license PRs Welcome Issue Welcome Release Version Build Status

A very flexible, lightweight and high performance HTTP server library based on libev and http-parser for Embedded Linux.

Features

  • Lightweight and high performance
  • Use libev as its event backend
  • Support HTTPS - OpenSSL, mbedtls and CyaSSl(wolfssl)
  • Support IPv6
  • Support CGI
  • Support plugin
  • Support upload large file
  • Support HTTP range requests
  • Support multi-process model - The same multi-process model as Nginx
  • Flexible - you can easily extend your application to have HTTP/HTTPS services
  • Code structure is concise and understandable, also suitable for learning

Dependencies

  • libev - A full-featured and high-performance event loop
  • http-parser - A high performance parser for HTTP messages written in C
  • mbedtls - If you choose mbedtls as your SSL backend
  • wolfssl - If you choose wolfssl as your SSL backend
  • openssl - If you choose openssl as your SSL backend

Benchmark

Nginx

$ wrk -t4 -c400 -d10s http://localhost:80/test.html
Running 10s test @ http://localhost:80/test.html
4 threads and 400 connections
Thread Stats   Avg      Stdev     Max   +/- Stdev
	Latency     3.54ms    7.32ms 224.58ms   93.30%
	Req/Sec    40.63k    12.49k   96.29k    74.50%
1622012 requests in 10.05s, 385.09MB read
Requests/sec: 161390.39
Transfer/sec:     38.32MB

libuhttpd

$ wrk -t4 -c400 -d10s http://localhost:8080/test.html
Running 10s test @ http://localhost:8080/test.html
4 threads and 400 connections
Thread Stats   Avg      Stdev     Max   +/- Stdev
	Latency     2.12ms    3.01ms  31.30ms   89.26%
	Req/Sec    70.87k    12.53k  142.54k    79.75%
2826394 requests in 10.05s, 547.18MB read
Requests/sec: 281328.83
Transfer/sec:     54.46MB

Build

~/libuhttpd/$ mkdir build && cd build
~/libuhttpd/build$ cmake ..
~/libuhttpd/build$ make

Run Example

Run

~/libuhttpd/build$ ./example/simple_server -v -a :8080

Then use the curl to test

$ curl 'http://127.0.0.1:8000/echo' -v

Install on OpenWrt

opkg update
opkg list | grep libuhttpd
opkg install libuhttpd-nossl

If the install command fails, you can compile it yourself.

Contributing

If you would like to help making libuhttpd better, see the CONTRIBUTING.md file.

More Repositories

1

rtty

🐛 Access your terminal from anywhere via the web.
C
3,643
star
2

oui

🐛 A framework used to develop Web interface for OpenWrt. Use Lua-eco + Vue3 + Vite + Element Plus.
C
1,030
star
3

rttys

Access your device's terminal from anywhere via the web.
Go
660
star
4

libuwsc

A Lightweight and fully asynchronous WebSocket client library based on libev
C
288
star
5

wifidog-ng

Next generation WifiDog implemented in Lua and kernel module.
Lua
229
star
6

evmongoose

DEPRECATED. Evmongoose is an asynchronous, event(libev) based multi-protocol embedded networking library with functions including TCP, HTTP, WebSocket, MQTT and much more. It's based on mongoose and libev implementation and it's support Lua API.
C
212
star
7

libumqtt

A Lightweight and fully asynchronous MQTT client C library based on libev
C
192
star
8

xluci2

DEPRECATED. xLuCI2 is a JavaScript Webgui for embedded devices running OpenWRT or LEDE
JavaScript
151
star
9

U-boot-1

U-boot学习笔记
104
star
10

lua-eco

🐛Lua-eco is a Lua interpreter with a built-in event loop for scheduling lightweight coroutines automatically, enabling efficient concurrency in Lua. Build high-performance, scalable applications.
C
71
star
11

wifidog-ng-authserver

A simple auth server for wifidog-ng to test
Go
22
star
12

lua-ffi

A portable lightweight C FFI for Lua, based on libffi and aiming to be mostly compatible with LuaJIT FFI.
C
22
star
13

buffer

A buffer similar to the skbuff in the kernel, but more suitable for application.
C
15
star
14

barebox

Better barebox. Support AR9331, AR9344 and more...
C
14
star
15

ssl

The encapsulation of OpenSSL, WolfSSL, and MBEDTLS aims to make usage easy.
C
8
star
16

log

C
3
star