#html #web-server #web #http #template #server #file-path

app simplestatic

轻量级且极简的单页 Web 服务器

3 个稳定版本

1.0.4 2021 年 4 月 9 日
1.0.0 2021 年 4 月 8 日

#633HTTP 服务器

AGPL-3.0

33KB
593

Simple Static

Crates.io GitHub Workflow Status GitHub

Simple Static 是一个简单的 HTTP 服务器,用于提供单个简单的 HTTP 文件和其他可能的资源。Simple Static 存在的原因是提供一种后端 Web 服务器,用于简单情况,如维护页面或 404 页面,在这些情况下代理本身不提供静态网站。

Simple Static 能够将给定路径的 JavaScript 和 CSS 文件嵌入到 HTML 文件中,并处理 Content-Security-Policy,以确保任何内联样式或脚本都包含在 CSP 中,以实现最大安全性。

Simple Static 还能够提供其他静态内容,但其目的仅限于为主 HTML 文件提供类似图片的内容。

部署

从 cargo 安装

运行 cargo install simplestatic

然后只需运行 simplestatic。使用 --help 获取帮助。

Docker

Simplestatic 可以从 ghcr.io/transyhdistys/simplestatic:latest 拉取

因此运行它可能就像这样简单:docker run -dp 3333:3333 ghcr.io/transyhdistys/simplestatic:latest

或者对于 docker-compose

simplestatic:
    image: ghcr.io/transyhdistys/simplestatic:latest
    environment:
      - SSTATIC_PORT: 3333 # See configuring for more
    ports:
      - 3333:3333

手动构建

只需安装 Rust 并运行 cargo run。它不应该有其他依赖项,并且至少需要 Rust 1.48 版本。

性能

在我的个人电脑上,使用 wrk 测试时,Simple Static 能够每秒处理大约 150,000 个请求,这应该足够用于任何应用。

100 MB 的 RAM 可能足够用于各种维护网站(除非你使用大型 JavaScript 库,在这种情况下你可能需要更多)。

至于 CPU,我无法确切地说。一个烤面包机应该能够运行这个程序,但是如果有足够的流量,它可能会消耗你提供的所有 CPU。

配置 Simple Static

配置可以通过三种不同的方式完成。

环境变量 命令行参数 config.toml 说明
SSTATIC_HTML_PATH --html html 指向单个HTML文件的路径。
SSTATIC_JS_PATH --js js 指向要嵌入的javascript文件的路径,或者包含要嵌入的javascript文件的文件夹。
SSTATIC_CSS_PATH --css css 指向要嵌入的css文件的路径,或者包含要嵌入的css文件的文件夹。
SSTATIC_UNSAFE_INLINE --unsafe-inline unsafe_inline 允许使用unsafe-inline CSP策略。
SSTATIC_PORT --port port 要绑定的端口。
SSTATIC_HOST --host host 要绑定的主机地址。
SSTATIC_STATIC_PATH --static-path static_path 将提供静态内容的路径
SSTATIC_STATIC_CONTENT --static-content static_content 将要提供的内容的路径
SSTATIC_MIME_TYPES --mime-types mime_types 包含mime类型的文件的路径。
SSTATIC_CONFIG_PATH --config-path 无选项 可选的config.toml文件的路径。

这些配置的优先级顺序,从最高优先级到最低优先级依次是

  1. 命令行参数
  2. config.toml
  3. 环境变量

示例toml配置可以在config.sample.toml中找到。默认的配置文件是工作目录下的config.toml,而config.sample.toml配置为使用默认配置。

模板化

Simple Static支持一点模板化,以便为每个请求定制网页。

  1. 程序开始时,它会查找HTML文件中{{ js }}{{ css }}的条目。这就是它分别嵌入找到的任何外部javascript和css文件的地方。
  2. 每次页面渲染时,都会填充一些额外的模板。请参考下表
是什么 变成
{{Host}} Host -header
{{User-Agent}} User-Agent -header

License

Simple Static是在AGPLv3许可下授权的。

依赖关系

~17–30MB
~537K SLoC