GHFS: Go HTTP File Server

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

GHFS: Go HTTP File Server

软件特色

使用方法

ghfs [选项]

选项列表:
-l|--listen <IP|端口|:端口|IP:端口|socket> ...
    指定服务器要侦听的IP和端口,例如“:80”或“127.0.0.1:80”。
    如果指定了--cert和--key,端口接受TLS连接。
    如果未指定端口,则在纯HTTP模式下使用80端口,TLS模式下使用443端口。
    如果值中包含“/”,则将其当作unix socket路径。
    标志“-l”或“--listen”可以省略。
--listen-plain <IP|端口|:端口|IP:端口|socket> ...
    与--listen类似,但强制使用非TLS模式。
--listen-tls <IP|端口|:端口|IP:端口|socket> ...
    与--listen类似,但强制使用TLS模式。若未指定证书和私钥,则启动失败。

--hostname <主机名> ...
    指定与当前虚拟主机关联的主机名。如果值以“.”开头,则将其当作后缀,匹配该域下的所有子域名。

-r|--root <目录>
    服务器的根目录。
    默认为当前目录。

-a|--alias <分隔符><URL路径><分隔符><文件系统路径> ...
    设置路径别名。例如:“@/data@D:\”。

-U|--global-upload
    对所有URL路径开启上传权限。
    如果文件已存在,则尝试添加或递增数字后缀。
    请谨慎使用。
-u|--upload <URL路径> ...
    设置开启上传权限的URL路径。
    请谨慎使用。
--upload-dir <文件系统路径> ...
    与--upload类似,但指定的是文件系统路径,而不是URL路径。

-A|--global-archive
    对所有URL路径开启打包下载当前目录内容的功能。
    页面顶部会出现下载链接。
    请确保符号链接没有循环引用。
--archive <URL路径> ...
    对指定URL路径开启打包下载当前目录内容的功能。
--archive-dir <文件系统路径> ...
    与--archive类似,但指定的是文件系统路径,而不是URL路径。

--global-cors
    对所有URL路径允许CORS跨域请求。
--cors <url-path> ...
    对指定URL路径允许CORS跨域请求。
--cors-dir <fs-path> ...
    对指定文件系统路径允许CORS跨域请求。

-c|--cert <证书文件>
    指定TLS证书文件。

-k|--key <私钥文件>
    指定TLS私钥文件。

-t|--template <模板文件>
    指定用于渲染页面的自定义模板,代替内建模板。

-S|--show <通配符> ...
-SD|--show-dir <通配符> ...
-SF|--show-file <通配符> ...
    如果指定该选项,只有匹配通配符的目录或文件(除了被hide选项隐藏的)才会显示出来。

-H|--hide <wildcard> ...
-HD|--hide-dir <wildcard> ...
-HF|--hide-file <wildcard> ...
    如果指定该选项,匹配通配符的目录或文件不会显示出来。

-L|--access-log <文件>
    访问日志。
    使用“-”指定为标准输出。
    设为空来禁用。

-E|--error-log <文件>
    错误日志。
    使用“-”指定为标准错误输出。
    设为空来禁用。
    默认为“-”。

--config <文件>
    为当前虚拟主机指定外部配置文件。

    其内容为任何其他选项,
    与在命令行指定的形式相同,
    用空白符分割。

    外部配置的优先级低于命令行选项。
    如果在命令行指定了某个选项,则其外部配置被忽略。

,,
    要指定多台虚拟主机的选项,用此符号分割每台主机的选项。
    可以为每台虚拟主机分别指定以上选项。

举例

在8080端口启动服务器,根目录为当前工作目录:

ghfs -l 8080

在8080端口启动服务器,根目录为E:\data:

ghfs -l 8080 -r E:\data

在默认端口启动服务器,根目录为E:\temp,并允许上传文件到E:\temp\upload:

ghfs -r E:\temp -u /upload

共享D:\data下的文件,同时把E:\doc挂载到URL路径/doc下:

ghfs -r D:\data -a @/doc@E:\doc

在8080端口启动服务器,使用HTTPS协议:

ghfs -k 私钥路径 -c 证书路径 -l 8080

隐藏“.”开头的目录和文件。提示:用引号括起通配符以避免shell展开:

ghfs -H '.*'

在命令行显示访问日志

ghfs -L -

启动2台虚拟主机:

ghfs --listen-plain 80 --listen-tls 443 -c E:\cert\server1.pem -k E:\cert\server1.key --hostname server1.example.com -r E:\www\server1 ,, --listen-plain 80 --listen-tls 443 -c E:\cert\server2.pem -k E:\cert\server2.key --hostname server2.example.com -r E:\www\server2

下载

操作系统64位32位
Windows 7+下载下载
Windows XP-Vista下载下载
Linux,x86架构,内核版本≥2.6.23下载下载
Linux,ARM架构,内核版本≥2.6.23下载下载
OS X Yosemite 10.10+下载下载

源代码

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

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