This is a maintenance fork of libuhttpd
 
 
 
移至檔案
Chris Babcock e29741fb1f Merge remote-tracking branch 'upstream/master' into main 2021-03-06 23:52:36 -07:00
.github/workflows ci: auto release 2021-02-27 00:29:53 +08:00
cmake/Modules Use libev instead of libubox 2019-08-31 16:33:08 +08:00
example style: fix 2021-03-02 20:51:58 +08:00
src feat: connection: new api: traverse_headers 2021-03-02 20:53:05 +08:00
.gitignore Update .gitignore 2021-01-12 10:39:06 +08:00
.gitmodules http-parser: Use submodule 2020-03-06 13:48:48 +08:00
BUILDOPENWRT.md chmod 644 2018-03-18 10:48:32 +08:00
BUILDOPENWRT_ZH.md chmod 644 2018-03-18 10:48:32 +08:00
CMakeLists.txt Bump CMake minimum to 2.8.12 2021-01-20 22:34:15 +08:00
CONTRIBUTING.md chmod 644 2018-03-18 10:48:32 +08:00
CONTRIBUTING_ZH.md chmod 644 2018-03-18 10:48:32 +08:00
LICENSE Change the license information 2019-09-03 15:03:35 +08:00
README.md Merge remote-tracking branch 'upstream/master' into main 2021-03-06 23:52:36 -07:00
README_ZH.md Bump version 3.10.1 2021-03-01 17:12:42 +08:00
gen_cert.sh feat: multiple listen 2021-02-27 00:22:53 +08:00

README_ZH.md

libuhttpd

license PRs Welcome Issue Welcome Release Version Build Status

一个非常灵活的,轻量的,全异步的HTTP服务器C库,基于libevhttp-parser,主要用于嵌入式Linux。

特性

  • 轻量、全异步
  • 使用libev作为其事件后端
  • 支持HTTPS - OpenSSL, mbedtls 和 CyaSSl(wolfssl)
  • 支持 HTTP 流水线
  • 支持 IPv6
  • 支持插件
  • 支持上传大文件
  • 支持 HTTP 范围请求
  • 支持多进程模型 - 和 Nginx 一样的多进程模型
  • 可伸缩 - 你可以非常方便的扩展你的应用程序,使之具备HTTP/HTTPS服务
  • 代码结构简洁通俗易懂,亦适合学习

依赖

  • libev - 一个全功能和高性能的事件循环库
  • http-parser - 一个用 C 语言编写的高性能的 HTTP 消息解析器
  • mbedtls - 如果你选择mbedtls作为你的SSL后端
  • wolfssl - 如果你选择wolfssl作为你的SSL后端
  • openssl - 如果你选择openssl作为你的SSL后端

基准测试

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

配置

查看支持哪些配置选项

~/libuhttpd/$ mkdir build && cd build
~/libuhttpd/build$ cmake .. -L
~/libuhttpd/build$ cmake .. -LH

编译和安装

~/libuhttpd/build$ make && sudo make install

运行示例程序

运行

~/libuhttpd/build$ ./example/simple_server -v

然后使用命令curl或者浏览器进行测试

$ curl -k 'https://127.0.0.1:8000/hello'

安装到OpenWRT

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

如果安装失败,你可以自己编译

示例程序

贡献代码

如果你想帮助libuhttpd变得更好,请参考 CONTRIBUTING_ZH.md

技术交流

QQ群:153530783