EHFS: Extra HTTP File Server

EHFS(Extra HTTP File Server) 是基于命令行的HTTP文件共享服务器。

Extra HTTP File Server基于Go HTTP File Server,附带额外功能。 它为简单静态网站提供了常用的功能。

新增选项

--ip-allow <IP>|<network/prefix> ...
--ip-allow-file <file> ...
    只允许来自指定的IP或网络的客户端访问。
    不匹配的客户端IP会被拒绝访问。

--ip-deny <IP>|<network/prefix> ...
--ip-deny-file <file> ...
    只拒绝来自指定的IP或网络的客户端访问。
    不匹配的客户端IP会被允许访问。

--rewrite-host <分隔符><match><分隔符><replace>
    如果请求的host+URL(“host[:port]/request/path?param=value”的形式)匹配正则表达式`match`,
    将其重写为另一种形式。

    重写的目标由`replace`指定。
    使用`$0`表示`match`的完整匹配。
    使用`$1`-`$9`来表示`match`中的子匹配。
--rewrite-host-post <分隔符><match><分隔符><replace>
    与--rewrite-host相似,但在重定向无匹配后执行。
--rewrite-host-end <分隔符><match><分隔符><replace>
    与--rewrite-host-post相似,但匹配后跳过后续处理流程。

--rewrite <分隔符><match><分隔符><replace>
    如果请求的URL(“/request/path?param=value”的形式)匹配正则表达式`match`,
    将其重写为另一种形式。

    重写的目标由`replace`指定。
    使用`$0`表示`match`的完整匹配。
    使用`$1`-`$9`来表示`match`中的子匹配。
--rewrite-post <分隔符><match><分隔符><replace>
    与--rewrite相似,但在重定向无匹配后执行。
--rewrite-end <分隔符><match><分隔符><replace>
    与--rewrite-post相似,但匹配后跳过后续处理流程。

--redirect <分隔符><match><分隔符><replace>[<separator><status-code>]
    当请求的URL(“/request/path?param=value”的形式)匹配正则表达式`match`时,
    执行HTTP重定向。

    重定向目标由`replace`指定。
    使用`$0`表示`match`的完整匹配。
    使用`$1`-`$9`来表示`match`中的子匹配。

    可选的`status_code`指定HTTP重定向代码。 默认为301。

--proxy <分隔符><match><分隔符><replace>
    如果请求的URL(“/request/path?param=value”的形式)匹配正则表达式`match`,
    将代理请求另一个目标。

    代理的目标由`replace`指定。
    使用`$0`表示`match`的完整匹配。
    使用`$1`-`$9`来表示`match`中的子匹配。

--return <分隔符><match><分隔符><status-code>
    当请求的URL(“/request/path?param=value”的形式)匹配正则表达式`match`时,
    立即返回状态码`status-code`并停止处理。
--to-status <分隔符><match><分隔符><status-code>
    与--return类似,但在ghfs内部处理流程完成后执行。

--status-page <分隔符><status-code><分隔符><fs-path>
    当响应状态码为`status-code`时,用文件`fs-path`的内容来响应。

--header-add <分隔符><match><分隔符><name><分隔符><value>
--header-set <分隔符><match><分隔符><name><分隔符><value>
    当请求的URL(“/request/path?param=value”的形式)匹配正则表达式`match`时,
    添加或设置响应头。

举例

根据redirect参数执行重定向:

# 当请求 http://localhost:8080/redirect/www.example.com时,重定向到https://www.example.com
ehfs -l 8080 -r /path/to/share --redirect '#/redirect/(.*)#https://$1'

访问静态页面URL无须包含.html后缀:

ehfs -l 8080 -r /path/to/share --redirect '#(.*)\.html#$1' --rewrite-post '#^.*/[^/.]+$#$0.html'

指定404状态页文件:

ehfs -l 8080 -r /path/to/share --status-page '#404#/path/to/404/file'

拒绝显示关键性文件或目录,返回403状态:

ehfs -l 8080 -r /path/to/share --return '#.git|.htaccess#403'

下载

操作系统64位32位
Windows 10+,x86架构下载
下载(支持AVX2的处理器)
Windows 10+,ARM架构下载下载
Linux,x86架构,内核版本≥2.6.32下载
下载(支持AVX2的处理器)
Linux,ARM架构,内核版本≥2.6.32下载下载
Linux,RISC-V架构,内核版本≥2.6.32下载
Linux,Loong架构,内核版本≥5.19下载
OS X,x86架构,Sierra 10.12+下载
OS X,ARM架构,Sierra 10.12+下载

源代码

EHFS使用Go语言开发,以MIT许可发布。

国内镜像
https://gitee.com/mjpclab/extra-http-file-server
国外镜像
https://github.com/mjpclab/extra-http-file-server