映射

1
2
3
4
5
volumes:
- /docker/nginx/file:/usr/share/nginx/file #储存文件的目录
- /docker/nginx/nginx.conf:/etc/nginx/nginx.conf #配置文件
ports:
- 12345:80 #自行修改宿主机未被占用的端口

nginx.conf 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# nginx.conf
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;

location ^~ /download/ {
alias /usr/share/nginx/file/;

if ($request_filename ~* ^.*?\.(html|doc|pdf|zip|docx|txt)$) {
add_header Content-Disposition attachment;
add_header Content-Type application/octet-stream;
}
sendfile on; # 开启高效文件传输模式
autoindex off; # 开启目录文件列表
autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes
autoindex_localtime on; # 显示的文件时间为文件的服务器时间
charset utf-8,gbk; # 避免中文乱码
}
}
}

实例

  • test.txt 放在 /docker/nginx/file 下,即可通过 http://宿主机ip:12345/download/test.txt 进行直链下载
  • 想访问目录的话就把上面的 autoindex off 改成 autoindex on,通过 http://宿主机ip:12345/download 即可访问目录