8 个版本
0.3.2 | 2022年6月22日 |
---|---|
0.3.1 | 2022年6月13日 |
0.2.0 | 2022年5月31日 |
0.1.4 | 2022年5月31日 |
20 在 #hyper-server
每月 185 次下载
27KB
242 代码行
Simple Hyper Server TLS
该库简化了 Hyper 服务器(包括 ALPN(应用层协议协商)设置)的 TLS 配置。该库配置了适合客户端的 TLS 配置。配置包括 HTTP 协议选择设置(ALPN 机制设置),由于几乎所有客户端都可以选择例如 HTTP/2 协议。
使用此库需要选择合适的 TLS 实现,通过选择以下功能之一:
tls-rustls
- RusTLS - 基于 tokio-rustls 的 Rust TLS 实现的本地实现,tls-openssl
- OpenSSL - 基于 OpenSSL 库和 openssl 的 TLS 实现。
对于由于某些问题(例如缺少某些由 ring
crate 需要的 CPU 指令)无法处理 rustls 的系统,推荐使用 tls-openssl
。对于其他系统,应首选 tls-rustls
。
默认启用三个 HTTP 协议版本(HTTP/1.0、HTTP/1.1、HTTP/2)。可以通过禁用默认功能并选择以下功能之一来仅选择一个版本:
hyper-h1
- 用于 HTTP/1.0 或 HTTP/1.1,hyper-h2
- 用于 HTTP/2。
其他功能列表
hyper-full-server
- 启用 hyper 服务器所有功能。
示例
最简单的使用方法是
use std::{convert::Infallible, net::SocketAddr};
use simple_hyper_server_tls::*;
use hyper::{Body, Request, Response, Server};
use hyper::service::{make_service_fn, service_fn};
async fn handle(_: Request<Body>) -> Result<Response<Body>, Infallible> {
Ok(Response::new("Hello, World!".into()))
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
let make_svc = make_service_fn(|_conn| async {
Ok::<_, Infallible>(service_fn(handle))
});
let mut server = hyper_from_pem_files("cert.pem", "key.pem", Protocols::ALL, &addr)?
.serve(make_svc);
while let Err(e) = (&mut server).await {
eprintln!("server error: {}", e);
}
Ok(())
}
可以使用其他函数来定制 TLS 配置。
依赖项
~5–17MB
~220K SLoC