Nginx利用filebrowser管理vps中的文件

站点环境用的是LNMP一键包,并没有像大家一样用宝塔、AMH之类的面板程序,一来是因为vps配置较低,二来用一键包个人认为比较安全,但是遇到需要管理vps中的文件的时候就比较麻烦。不过还好,可以配合filebrowser管理vps的文件。

filebrowser 功能介绍

filebrowser是用Go语言开发的文件管理器,不需要第三方地依赖,除了配合Nginx、Apache、Caddy等Web服务器使用外,也可单独作为Web文件管理器使用,功能上支持简单的音视频播放,分享文件方面提供永久链接或临时链接(按时、分、秒)进行分享,并支持在下载页面展示当前下载页面的二维码,非常实用。站长我喜欢用filebrowser编辑一些配置文件,避免了了SSH终端用vi编辑文件的痛苦。

安装filebrowser

前面说了filebrowser的功能,现在是分享搭建filebrowser的步骤,我用的linux环境是Debian 64位系统,所以这里以Debian 64位系统作为本文的系统基础,大家可做做参考。

1.切换到home目录

 cd /home  

2.SSh连接vps,访问filebrowse托管平台github的releases 页面,下载对应系统版本的filebrowser文件,并解压文件。

  wget https://github.com/filebrowser/filebrowser/releases/download/v2.0.16/linux-amd64-filebrowser.tar.gz   

  tar -xzvf linux-amd64-filebrowser.tar.gz  

3.赋予filebrowser运行权限

 chmod +x ./filebrowser  

4.指定端口运行一遍filebrowser,这样filebrowser就会在同目录下生成同名配置文件filebrowser.db。因为Nginx占用了80、433端口,所以这里我指定了其他端口,你可以按照自己的需求指定自己的端口,本文以25557端口为例

 ./filebrowser -p 25557 -a 0.0.0.0  

5.访问filebrowser,并更改默认的密码,默认账户密码皆为admin

 http://ip:25557  

6.终止filebrowser运行

 CTRL+C  

7.设置filebrowser为系统服务

 cat << EOF > /lib/systemd/system/filebrowser.service  

8.接着输入下列配置

 [Unit]  
 Description=Filebrowser Client Service  
 After=network.target  

 [Service]  
 Type=simple  
 Restart=always  
 RestartSec=5s  
 ExecStart=/home/filebrowser -p 25557 -a 0.0.0.0   
 ExecReload=/home/filebrowser reload -p 25557 -a 0.0.0.0  

 [Install]  
 WantedBy=multi-user.target  
 EOF  

9.开机启动filebrowser

 systemctl enable filebrowser  

10.启用filebrowser

 systemctl start filebrowser

设置通过域名并启用SSL访问filebrowser

通过的上面的步骤,已经安装filebrowser并设置为系统服务运行,通过ip+端口访问filebrowser并不美观,也不安全,建议启用域名并上SSL访问filebrowser,这里通过LNMP一键包反代实现。

LNMP一键包反代方式实现SSL访问filebrowser

如果你用的LNMP一键包,就简单许多,直接通过 lnmp vhost add 方式新建站点并启用证书,然后编辑站点对应的conf 配置文件,我这里以xxx.com示例:

 vi /usr/local/nginx/conf/vhost/xxx.com.conf  

把下面的部分:

 server  
{                                                               
    listen 80;                                                 
    server_name xxx.com;
    .....   
    }    

server
{
    listen 443 ssl http2;
    #listen [::]:443 ssl http2;
    server_name XXX.com;
    index index.html index.htm index.php default.html default.htm default.php;
    root  /home/wwwroot/XXX.com;

    .....
}

改为

 server  
{                                                               
    listen 80;                                                 
    server_name xxx.com;
    rewrite ^(.*)$ https://$host$1 permanent; 
    }    

server
{
    listen 443 ssl http2;
    #listen [::]:443 ssl http2;
    server_name XXX.com;

    .....

location / {
            proxy_pass http://localhost:27775;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }


}  

特别强调:上面的网页配置文件上面的网页配置文件conf中,一定要删除下列列出的部分,否则filebrowser会一直卡在首页界面并无限循环。因为不删除这部分,filebrowser无法正常加载css、js等文件,页面当然就无法正常加载了

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }

    location ~ /.well-known {
        allow all;
    }

    location ~ /\.
    {
        deny all;
    }

重启Nginx生效

  lnmp restart  

Nginx反代方式

Nginx反代方式跟LNMP基本类似,因为LNMP一键包本质上还是Nginx环境,配置文件如下:

 server {
   listen       80;
   server_name XXX.com;
   rewrite ^ https://$http_host$request_uri? permanent;   
 }


 server {
   listen 443;
   root /XXX/XXX.com;
   server_name XXX.com; 
   ssl on;
   ssl_certificate /XXX.com.bundle.crt;  #证书路径
   ssl_certificate_key /XXX.com.key;  #密钥路径
   ssl_session_timeout 5m;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; 
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
   ssl_prefer_server_ciphers on;
 location / {
     proxy_pass http://localhost:27775;
    }
 }  

重启nginx

 service nginx restart  

filebrowser首页目录设置

设置——用户管理——用户名右边的编辑按钮——目录范围

可设置下面的常见目录:

 /home ##用户文件夹
 /     ##根目录
 .     ##filebrowser展示为当前目录,即filebrowser所在的目录
 /home/wwwwroot     ##LNMP的网页存放目录
 /home/wwwlogs/     ##LNMP的网页日志目录