3 个稳定版本
1.0.4 | 2021 年 4 月 9 日 |
---|---|
1.0.0 | 2021 年 4 月 8 日 |
#633 在 HTTP 服务器
33KB
593 行
Simple Static
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文件的路径。 |
这些配置的优先级顺序,从最高优先级到最低优先级依次是
- 命令行参数
- config.toml
- 环境变量
示例toml配置可以在config.sample.toml
中找到。默认的配置文件是工作目录下的config.toml
,而config.sample.toml
配置为使用默认配置。
模板化
Simple Static支持一点模板化,以便为每个请求定制网页。
- 程序开始时,它会查找HTML文件中
{{ js }}
和{{ css }}
的条目。这就是它分别嵌入找到的任何外部javascript和css文件的地方。 - 每次页面渲染时,都会填充一些额外的模板。请参考下表
是什么 | 变成 |
---|---|
{{Host}} |
Host -header |
{{User-Agent}} |
User-Agent -header |
License
Simple Static是在AGPLv3许可下授权的。
依赖关系
~17–30MB
~537K SLoC