Skip to content

Commit 33d6b1c

Browse files
committed
docs: add Simplified-Chinese translation for README
1 parent 62fa1da commit 33d6b1c

File tree

1 file changed

+213
-0
lines changed

1 file changed

+213
-0
lines changed

README.zh-CN.md

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
# Go HTTP File Server
2+
基于命令行的HTTP文件共享服务器。
3+
4+
![Go HTTP File Server pages](doc/ghfs.gif)
5+
6+
## 软件特色
7+
- 比Apache/Nginx更友好的目录列表
8+
- 适配移动设备显示
9+
- 可以将当前浏览目录内容打包下载
10+
- 可以开启某个目录的上传权限
11+
- 可以指定自定义模板来渲染页面
12+
- 支持目录别名(将另一个目录挂载到某个URL路径)
13+
14+
## 编译
15+
至少需要Go 1.9版本。
16+
```bash
17+
go build src/main.go
18+
```
19+
会在当前目录生成"main"可执行文件。
20+
21+
如果修改过`src/tpl`下的默认html模板,需要将其重新嵌入go文件:
22+
```bash
23+
cd src
24+
make tpls
25+
```
26+
然后再像上面那样编译。
27+
28+
## 编译后程序的使用方法
29+
```
30+
server [选项]
31+
32+
-l|--listen <IP|端口|:端口|IP:端口|socket> ...
33+
指定服务器要侦听的IP和端口,例如“:80”或“127.0.0.1:80”。
34+
如果指定了--cert和--key,端口接受TLS连接。
35+
如果未指定端口,则在纯HTTP模式下使用80端口,TLS模式下使用443端口。
36+
如果值中包含“/”,则将其当作unix socket路径。
37+
标志“-l”或“--listen”可以省略。
38+
--listen-plain <IP|端口|:端口|IP:端口|socket> ...
39+
与--listen类似,但强制使用非TLS模式。
40+
--listen-tls <IP|端口|:端口|IP:端口|socket> ...
41+
与--listen类似,但强制使用TLS模式。若未指定证书和私钥,则启动失败。
42+
43+
--hostname <主机名> ...
44+
指定与当前虚拟主机关联的主机名。如果值以“.”开头,则将其当作后缀,匹配该域下的所有子域名。
45+
46+
-r|--root <目录>
47+
服务器的根目录。
48+
默认为当前目录。
49+
50+
-R|--empty-root
51+
使用空的虚拟目录作为根目录。
52+
在仅需挂载别名的情况下较实用。
53+
54+
-I|--dir-index <文件> ...
55+
指定目录默认页面文件。
56+
57+
-a|--alias <分隔符><URL路径><分隔符><文件系统路径> ...
58+
设置路径别名。例如:“:/doc:/usr/share/doc”。
59+
60+
-U|--global-upload
61+
对所有URL路径开启上传权限。
62+
如果文件已存在,则尝试添加或递增数字后缀。
63+
请谨慎使用。
64+
-u|--upload <URL路径> ...
65+
设置允许上传的URL路径(及子路径)。
66+
请谨慎使用。
67+
--upload-dir <文件系统路径> ...
68+
与--upload类似,但指定的是文件系统路径,而不是URL路径。
69+
70+
-A|--global-archive
71+
对所有URL路径开启打包下载当前目录内容的功能。
72+
页面顶部会出现下载链接。
73+
请确保符号链接没有循环引用。
74+
--archive <URL路径> ...
75+
对指定URL路径(及子路径)开启打包下载当前目录内容的功能。
76+
--archive-dir <文件系统路径> ...
77+
与--archive类似,但指定的是文件系统路径,而不是URL路径。
78+
79+
--global-cors
80+
接受所有URL路径的CORS跨域请求。
81+
--cors <url-path> ...
82+
接受指定URL路径(及子路径)的CORS跨域请求。
83+
--cors-dir <fs-path> ...
84+
接受指定文件系统路径(及子路径)的CORS跨域请求。
85+
86+
--global-auth
87+
对所有URL路径启用http基本验证(Basic Auth)。
88+
--auth <url-path> ...
89+
对指定URL路径(及子路径)启用http基本验证。
90+
--auth-dir <fs-path> ...
91+
对指定文件系统路径(及子路径)启用http基本验证。
92+
--user [<用户名>]:[<密码>] ...
93+
为当前虚拟主机指定用于http基本验证的用户,允许空的用户名和/或密码。
94+
--user-base64 [<用户名>]:[<base64密码>] ...
95+
--user-md5 [<用户名>]:<md5密码> ...
96+
--user-sha1 [<用户名>]:<sha1密码> ...
97+
--user-sha256 [<用户名>]:<sha256密码> ...
98+
--user-sha512 [<用户名>]:<sha512密码> ...
99+
指定http基本验证的用户,对密码使用特定的编码。
100+
101+
-c|--cert <证书文件>
102+
指定TLS证书文件。
103+
104+
-k|--key <私钥文件>
105+
指定TLS私钥文件。
106+
107+
-t|--template <模板文件>
108+
指定用于渲染页面的自定义模板,代替内建模板。
109+
110+
-S|--show <通配符> ...
111+
-SD|--show-dir <通配符> ...
112+
-SF|--show-file <通配符> ...
113+
如果指定该选项,只有匹配通配符的目录或文件(除了被hide选项隐藏的)才会显示出来。
114+
115+
-H|--hide <wildcard> ...
116+
-HD|--hide-dir <wildcard> ...
117+
-HF|--hide-file <wildcard> ...
118+
如果指定该选项,匹配通配符的目录或文件不会显示出来。
119+
120+
-L|--access-log <文件>
121+
访问日志。
122+
使用“-”指定为标准输出。
123+
设为空来禁用。
124+
125+
-E|--error-log <文件>
126+
错误日志。
127+
使用“-”指定为标准错误输出。
128+
设为空来禁用。
129+
默认为“-”。
130+
131+
--config <文件>
132+
为当前虚拟主机指定外部配置文件。
133+
134+
其内容为任何其他选项,
135+
与在命令行指定的形式相同,
136+
用空白符分割。
137+
138+
外部配置的优先级低于命令行选项。
139+
如果在命令行指定了某个选项,则其外部配置被忽略。
140+
141+
,,
142+
要指定多台虚拟主机的选项,用此符号分割每台主机的选项。
143+
可以为每台虚拟主机分别指定以上选项。
144+
145+
如果多个虚拟主机共享相同的IP和端口,
146+
使用--hostname指定主机名,根据请求头中的主机名来区分虚拟主机。
147+
如果请求的主机名不匹配任何虚拟主机,
148+
服务器尝试使用第一个没有指定主机名的虚拟主机,
149+
如果失败则使用第一个虚拟主机。
150+
```
151+
152+
## 举例
153+
在8080端口启动服务器,根目录为当前工作目录:
154+
```sh
155+
server -l 8080
156+
```
157+
158+
在8080端口启动服务器,根目录为 /usr/share/doc:
159+
```sh
160+
server -l 8080 -r /usr/share/doc
161+
```
162+
163+
在默认端口启动服务器,根目录为/tmp,并允许上传文件到/tmp/data:
164+
```sh
165+
server -r /tmp -u /data
166+
```
167+
168+
共享/etc下的文件,同时把/usr/share/doc挂载到URL路径/doc下:
169+
```sh
170+
server -r /etc -a :/doc:/usr/share/doc
171+
```
172+
173+
在8080端口启动服务器,使用HTTPS协议:
174+
```sh
175+
server -k /path/to/certificate/key -c /path/to/certificate/file -l 8080
176+
```
177+
178+
不显示`.`开头的unix隐藏目录和文件。提示:用引号括起通配符以避免shell展开:
179+
```sh
180+
server -H '.*'
181+
```
182+
183+
在命令行显示访问日志:
184+
```sh
185+
server -L -
186+
```
187+
188+
http基本验证:
189+
- 对URL /files 启用验证
190+
- 用户名:user1,密码:pass1
191+
- 用户名:user2,密码:pass2
192+
```sh
193+
server --auth /files --user user1:pass1 --user-sha1 user2:8be52126a6fde450a7162a3651d589bb51e9579d
194+
```
195+
196+
启动2台虚拟主机:
197+
- 服务器1
198+
- 在80端口提供http服务
199+
- 在443端口提供https服务
200+
- 证书文件:/cert/server1.pem
201+
- 私钥文件:/cert/server1.key
202+
- 主机名:server1.example.com
203+
- 根目录:/var/www/server1
204+
- 服务器2
205+
- 在80端口提供http服务
206+
- 在443端口提供https服务
207+
- 证书文件:/cert/server2.pem
208+
- 私钥文件:/cert/server2.key
209+
- 主机名:server2.example.com
210+
- 根目录:/var/www/server2
211+
```sh
212+
server --listen-plain 80 --listen-tls 443 -c /cert/server1.pem -k /cert/server1.key --hostname server1.example.com -r /var/www/server1 ,, --listen-plain 80 --listen-tls 443 -c /cert/server2.pem -k /cert/server2.key --hostname server2.example.com -r /var/www/server2
213+
```

0 commit comments

Comments
 (0)