HttpServer: 基于IOCP模型且集成Openssl的轻量级高性能web服务器

2021年4月写过一个轻量级的web服务器HttpServer,见文章: 《HttpServer:一款Windows平台下基于IOCP模型的高并发轻量级web服务器》,但一直没有时间添加Openssl功能,也就是将HTTP拓展为HTTPS,从而提供安全访问功能。

没时间只是一方面,关键是集成openssl的难度也很大。

Windows的IOCP是一个高并发的异步IO模型,Openssl对异步IO支持的实现方式网上介绍的非常少,尤其是对IOCP模型。如果你的程序采用的是阻塞IO模型,使用openssl则非常简单,通过SSL_set_fd函数将socket和ssl绑定即可,后面的SSL握手和业务数据通信对于用户来说就是一个黑盒,openssl会帮你搞定所有的一切。显然,对于一个服务器而言,阻塞IO模型不是一个很好的选择。当然了,如果你不追求高性能,也可以采用多线程+IO阻塞模型的方式来实现一个服务器,从而可以方便的使用openssl。
去年12月26号,一位用户来信肯定了HttpServer的功能,同时也希望增加SSL(TLS)功能。这让我重新燃起了将Openssl集成到IOCP模型的信心(说明还是有人会用HttpServer,因此加上SSL功能也是有一定的意义)。通过几个星期的努力还是完成了此项功能,特此纪念。

HttpServer SSL版本下载地址

SSL配置

非常简单,几分钟而已。下载HttpServer SSL版本,解压后打开HttpServer.ini配置文件,在Section的[ssl]下进行证书和私钥的配置:如下图:
在这里插入图片描述

字段说明

use:是否使用SSL,0表示不使用,1表示使用;
CertificatePathFile:证书文件的全路径名;
PrivateKeyPathFile:私钥文件的全路径名;
Ciphers:加密套件配置规则,如:ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH,网上介绍很多,这里就不说明了;
PrivateKeyPassword:私钥文件的密码,如果私钥文件有口令(密码),则在此处配置;

为方便大家测试,我在压缩包中提供了cert.crt和privatekey.pem两个文件,由于是自己签发的,没有根证书授信,会被浏览器认为HTTPS连接不安全,要啥自行车。

启动服务

双击HttpServer.exe即可,默认端口号是443,该端口可通过ini配置文件进行修改。启动后如下:
在这里插入图片描述

说明

1、openssl使用的版本是 openssl 1.1.1i,亲自编译的一个版本,还冒着热气,x86的开发环境下载地址: openssl1.1.1i

2、由于HttpServer.exe中包含了打开其它进程的功能(调用CGI网关的执行文件,比如php和python程序),因此可能会被杀毒软件误认为是不安全的应用程序,可不必理会,特此说明。

3、我的所有下载服务都是由HttpServer提供,呵呵。

感谢您的使用!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言实现的支持高并发、超高性能Web服务器源码,可以编译运行,使用高性能HTTP解析器fasterhttp作为其解析核心,在开启Keep-Alive和gzip压缩时(现代浏览器默认开启)性能比nginx约快3倍。 hetao功能: * 支持主流操作系统Linux(基于epoll)、WINDOWS(基于IOCP,暂不支持HTTPS) * 支持HTTP/1.0、HTTP/1.1 * 支持通讯超时控制 * 支持多侦听端口 * 支持多虚拟主机(基于域名) * 支持自定义错误页面 * 支持自定义缺省index文件 * 支持自适应Keep-Alive * 支持自适应gzip、deflate压缩 * 支持HTTPS * 支持反向代理负载均衡(目前支持轮询、最少 连接数算法),支持HTTP与HTTPS互转 * 支持rewrite * 支持优雅重启/重载配置,重启期间完全不中断对外服务 * 支持工作进程绑定CPU * 支持进程 崩溃后自动重启安全机制: * HTTP请求报文合法性校验 * 活跃超时控制(防止僵尸连接)和累积超时控制(防止慢速攻击) * 每个IP连接数 限制 * 全局最大连接数限制 * 最大单个文件缓存大小 选择hetao的理由: *在Linux上的综合性能约比Nginx还要快三倍,尤其适合中小型静 态文件 * hetao是众多开源Web服务器中在WINDOWS版本唯一全部采用IOCP模型。Apache的WINDOWS版本是传统的Leader-Follow多进程模型,Nginx则 是多线程select模型(玩具?) * 配置文件采用JSON标准格式,简洁易写,而且支持行注释和块注释。Apache配置格式比较复杂,Nginx配置 格式多变怪异且不支持块注释 *

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值