想通过WEB界面给我的虚拟主机上传文件,因为在有些网络环境下,SCP需要直连主机。
选择了一番,最后选择了开源的dufs,它使用rust语言编写。
安装dufs
我要在ubuntu上安装,有两种办法,一种是直接在dufs官网下载对应操作系统的安装包,另一种办法是先安装rust,自己编译dufs。
这里说第二种办法:
apt update
apt install rustup
cargo install dufs
如果一切顺利,可以在/usr/local/bin下编译生成dufs二进制执行文件。
启动dufs
dufs的默认端口是5000。
查看帮助,使用命令:
dufs -h
将一个文件夹发布成文件服务:
dufs /root/myfolder
放开下载、上传、删除等全部功能:
dufs -A /root/myfolder
只允许下载和上传功能:
dufs --allow-upload /root/myfolder
配置nginx
为了网络安全,我只放开防火墙的80端口,把5000端口藏在nginx的myfolder之下,需要这样配置:
location /myfolder/ {
proxy_pass 127.0.0.1:5000/
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
sub_filter_once off;
sub_filter 'href="/' 'href="/myfolder/';
sub_filter 'src="/' 'src="/myfolder/';
client_max_body_size 200M;
}
配置项里要注意myfolder前后的斜杠’/‘字符不能少。sub_filter是为了替换网页里的链接地址,否则网页显示不正确。client_max_body_size用来限制上传文件的大小。
界面的效果是这样的:
使用curl上传文件
curl -T shenlb.me.txt "http://shenlb.me/myfolder/"