< 返回版块

西沉 发表于 2020-07-17 01:57

本期的每周一库给大家带来的是Rust下的静态文件HTTP服务器

首先附上库的相关链接

see是一个静态文件的HTTP服务器,它的Github仓库介绍十分简单,包含的特性有

  • 支持HTTP/1和HTTP/2
  • 支持内容压缩(自动,gzip,deflate,br)
  • 支持多种配置方式

直观感觉see的功能类似于nginx,下面我们来尝试使用see库

开发环境

  • Windows 10
  • cargo --version:cargo 1.46.0-nightly (089cbb80b 2020-06-15)
  • rustc --version:rustc 1.46.0-nightly (6bb3dbfc6 2020-06-22)

通过可执行程序直接使用see

首先下载see的可执行文件,解压后需要在目录C:\Users\$USER_NAME\.see目录下创建一个名为.config.yml文件,文件内容写入

- server:
    listen: 80
    root: C:\Users\$USER_NAME\.see\www

再创建一个名为www的文件夹

文件结构如下图

这里我们测试内容是:用see webserver来承载一个React App的网站,React部分的内容这里不做赘述,我们生成的React App是一个SPA静态页面,所以满足测试see的要求。

把通过npm run build命令生成的React App复制到刚才创建的C:\Users\$USER_NAME\.see\www文件夹中

然后在下载的可执行文件的目录下运行命令

see.exe

通过浏览器访问localhost:80,参考我们上面配置的config.yml文件中定义的端口,可以看到see成功承载了React App
rust-see-reactwebapp.png

see还支持更复杂的配置,类似于nginx.conf中的选项,更多的内容可以参考see的文档进行测试。
以上就是本期每周一库的内容

评论区

写评论
c5soft 2020-07-23 23:32

静态文件服务用warp几行代码就搞定

[dependencies]
warp = "0.2.4"
tokio = { version = "0.2.22", features = ["macros"] }

#[tokio::main]
async fn main() {
    let path = std::env::args().nth(1).unwrap_or(".".into());
    let port = std::env::args()
        .nth(2)
        .unwrap_or("8000".into())
        .parse::<u16>()
        .unwrap_or(8000_u16);
    println!(
        "Static File Http Server Ver 0.0.1\nRoot Dir: {}\nUsage: httpSvr [root_dir_default_.] [port_default_8000]\nhttp://127.0.0.1:{}/settings.html\n",
        path,port
    );
    let api = warp::fs::dir(path);
    let server = warp::serve(api);
    server.run(([0, 0, 0, 0], port)).await;
}
gisonwin 2020-07-21 12:42

可以用这和nginx做个bechmark 比较

1 共 2 条评论, 1 页