35 个稳定版本
使用旧的 Rust 2015
2.0.2 | 2024年6月3日 |
---|---|
1.13.2 | 2023年8月30日 |
1.13.0 | 2023年7月15日 |
1.12.6 | 2023年3月21日 |
0.2.0 | 2016年12月21日 |
#18 在 HTTP 服务器
304 每月下载次数
10KB
http

请托管这些事物 - 一个快速简单的 HTTP 服务器用于托管文件夹(现在仅支持 git:cargo install --git https://github.com/thecoshman/http)
精选特性
查看 手册页 以获取完整列表。
- 默认跟随符号链接(可通过
-s
选项禁用) - 为目录生成索引
- 合理的默认值(如托管目录 (
.
) 和端口(从8000
-9999
范围内的第一个可用端口)) - 为提供的文件设置正确的 MIME 类型
- 处理请求方法:OPTIONS, GET, PUT, DELETE, HEAD 和 TRACE("写入" 方法默认关闭,通过
-w
开关启用) - 正确处理百分号编码的 URL(如
асдф fdsa
) - 良好的符号链接处理,兼容 Windows
- 目录索引中的大量信息
- 从目录中提供索引文件(如
index.{html,htm,shtml}
),可通过-
开关禁用 - 拖放上传文件(指定
-
) - 智能编码生成的和来自文件系统的响应(可通过
-e
开关禁用) - 支持全范围头信息
- 可选自动生成TLS证书的托管
- 任意嵌套的用户名/密码认证
- 每个请求的带宽限制
- 可覆盖的MIME类型,有合理的猜测
- WebDAV/RFC2518 支持,已与Linux
davfs2
辅助工具测试,支持Windows网络文件系统(开箱即用),以及Total Commander WebDAV 插件 - RFSAPI 支持(格式规范)(可通过D'Oh从命令行访问)
手册页
安装
从 Cargo
如果你已经安装了 cargo
(你是 Rust 开发者),你只需要做
# unix:
RUSTC_BOOTSTRAP=1 cargo install --git https://github.com/thecoshman/http
rem windows:
set RUSTC_BOOTSTRAP=1
cargo install --git https://github.com/thecoshman/http
(crates.io 的 https
包 曾经 是 http,但现在 不可发布)。类似地,当通过 cargo install
构建时,cargo 明确忽略 允许构建包的配置,因此需要手动设置 RUSTC_BOOTSTRAP=1
,你也可以设置
cargo install-update-config -e RUSTC_BOOTSTRAP=1 https
以使用 cargo-update
这将安装 http
和 httplz
(相同,如果冲突则禁用其中一个)到所有其他二进制文件的文件夹中。
从 Debian 仓库
在 /etc/apt/sources.list
或等效文件中的以下行
deb [signed-by=/etc/apt/keyrings/nabijaczleweli.asc] https://debian.nabijaczleweli.xyz sid main
使用 我的 PGP 密钥(两个 URL 可以互换使用)
sudo wget -O/etc/apt/keyrings/nabijaczleweli.asc https://debian.nabijaczleweli.xyz/nabijaczleweli.gpg.key
sudo wget -O/etc/apt/keyrings/nabijaczleweli.asc https://nabijaczleweli.xyz/pgp.txt
(你可能需要在 apt <2.4.0 (<=bullseye)的情况下手动创建 /etc/apt/keyrings)。
然后是通常的
sudo apt update
sudo apt install http
将在 amd64 和 i386 上工作。
有关更多信息,请参阅 仓库 README。
在 Arch Linux 上
可以从 社区仓库 获取 httplz
pacman -S httplz
从安装程序
如果你不是 Rust 开发者,但你有类似 sh
的 shell,你可以使用安装程序(适用于 Windows 和 Linux)
curl -SsL https://cdn.rawgit.com/thecoshman/http/master/install.sh | sh
# or, if you like taking precautions
sh -c "$(curl -SsL https://cdn.rawgit.com/thecoshman/http/master/install.sh)"
你可以通过设置环境变量 PREFIX
来更改安装目录(默认 - /usr/bin
)
PREFIX=$HOME/bin curl -SsL https://cdn.rawgit.com/thecoshman/http/master/install.sh | sh
# Windows:
set PREFIX=D:\Akces
curl -SsL https://cdn.rawgit.com/thecoshman/http/master/install.sh | sh
如果你使用的是基于 Debian 的 amd64 机器,你也可以从 最新发布页面 获取 .deb
包。
如果你使用的是 Windows 并且更喜欢更直观的安装(或者你没有 shell),你可以从 最新发布页面的 Windows 安装程序下载。 (注意:你可以在安装程序命令行中添加 /D INSTALLDIR 来更改安装目录。)
目标
想法是创建一个可以编译成简单二进制文件的程序,可以通过 Linux CLI 快速将当前目录通过 HTTP 服务器提供服务。所有设置都应有合理的默认值,这样你就不必传递参数,例如要使用哪个端口。
- 子目录将自动托管。
- 默认情况下不会跟随符号链接(在我看来,这更可能是一个问题,而不是预期的事物)。
- 不需要根权限。
- 如果没有提供索引文件,则会自动生成(仅在内存中,不会触及磁盘,你为什么要这样做,你这个肮脏的家伙),该索引文件将列出当前文件和文件夹(然后根据需要生成子目录的索引文件)。
- 文件所做的更改应立即反映,因为我看不出为什么会有任何缓存...你请求一个文件,系统就会寻找该文件。
这不会是一个“可用于生产”的工具,它只是快速而简陋地托管文件夹的一种方法,所以虽然我会尽力使其安全,但这不会是我的主要目标。