想通过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用来限制上传文件的大小。

界面的效果是这样的:

alt text

使用curl上传文件

curl -T shenlb.me.txt "http://shenlb.me/myfolder/"