当前位置:   article > 正文

用nginx构建高效不限速的个人网盘(File Browser)_filebrower 部署nginx

filebrower 部署nginx

目录

一、源码编译安装nginx并部署私人网盘系统

1、源码编译、安装nginx

2.编写nginx启动脚本

3.管理nginx服务

4.安装并配置网盘程序

5.启动与管理网盘系统

6.检验

 二、使用nginx实现私人网盘安全代理

1.反向代理

​编辑 2.正向代理

​编辑 3.部署nginx实现反向代理 

4.验证

5.可能会遇到的问题

 三、使用nginx实现https加密传输

1.搞懂http与https

2.阿里云申请ssl证书

 3.绑定ssl证书到nginx

4.验证


一、源码编译安装nginx并部署私人网盘系统

1、源码编译、安装nginx

也可以看我这篇文章:Linux CentOS 7 下安装Nginx详细过程

部署步骤如下: 

(1)安装依赖和工具

[root@Server00 ~]# yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel wget pcre pcre-devel git

(2)将 linux-amd64-filebrowser.tar.gz 和 nginx-1.20.2.tar.gz 上传至/home/nginx_tar并解压nginx

  1. [root@Server00 ~]# mkdir -p /home/nginx_tar
  2. [root@Server00 ~]# cd /home/nginx_tar/
  3. [root@Server00 nginx_tar]# tar -zxvf nginx-1.20.2.tar.gz

(3)编译安装

  1. [root@Server00 nginx_tar]# cd nginx-1.20.2
  2. [root@Server00 nginx-1.20.2]# ./configure --with-http_stub_status_module --with-http_ssl_module
  3. [root@Server00 nginx-1.20.2]# make && make install
  4. # --with-http_ssl_module 启用ssl证书

nginx编译完成后,默认安装路径为/usr/local/nginx

2.编写nginx启动脚本

  1. [root@Server00 nginx]# vim /etc/systemd/system/nginx.service
  2. #输入下面代码
  3. [Unit]
  4. Description=The nginx HTTP and reverse proxy server
  5. After=network.target remote-fs.target nss-lookup.target
  6. [Service]
  7. Type=forking
  8. PIDFile=/usr/local/nginx/logs/nginx.pid
  9. ExecStartPre=/usr/bin/rm -f /usr/local/nginx/logs/nginx.pid
  10. ExecStartPre=/usr/local/nginx/sbin/nginx -t
  11. ExecStart=/usr/local/nginx/sbin/nginx
  12. ExecReload=/bin/kill -s HUP $MAINPID
  13. KillSignal=SIGQUIT
  14. TimeoutStopSec=5
  15. KillMode=process
  16. PrivateTmp=true
  17. [Install]
  18. WantedBy=multi-user.target

3.管理nginx服务

接着,就可以通过systemctl管理nginx服务了。

  1. systemctl start nginx #启动nginx服务
  2. systemctl stop nginx #关闭nginx服务
  3. systemctl reload nginx #重载nginx服务
  4. systemctl enable nginx #设置nginx服务开机自启动
  5. systemctl status nginx #查看nginx服务运行状态

4.安装并配置网盘程序

filebrowser 是一个使用go语言编写的软件,功能是可以通过浏览器对服务器上的文件进行管理。可以是修改文件,或者是添加删除文件,甚至可以分享文件,是一个很棒的文件管理器,你甚至可以当成一个网盘来使用。总之使用非常简单方便,功能很强大。

下载地址:https://github.com/filebrowser/filebrowser/releases
官方文档:Welcome - File Browser

(1)安装网盘系统

  1. [root@Server00 ~]# cd /home/nginx_tar/
  2. [root@Server00 nginx_tar]# tar -zxvf linux-amd64-filebrowser.tar.gz
  3. [root@Server00 nginx_tar]# cp filebrowser /usr/sbin/ # 将网盘主程序文件复制到sbin目录

(2)配置网盘系统

  1. [root@Server00 nginx_tar]# mkdir -p /data/fb
  2. [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config init
  3. # 初始化
  4. [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config set --address 0.0.0.0
  5. # 绑定网卡,任何人都可以访问
  6. [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config set --port 8088
  7. # 配置网盘系统访问的端口为8088,可自定义
  8. [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config set --locale zh-cn
  9. # 设置语言为简体中文
  10. [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config set --log /var/log/filebrowser.log
  11. # 设置日志存放路径

(3)设置网盘系统登录用户名和密码

[root@Server00 /]# filebrowser -d /data/fb/filebrowser.db users add admin abc123456 --perm.admin

上面创建了一个用户是admin,密码是abc123456的管理员账号
(4)设置网盘系统共享数据目录

  1. [root@Server00 /]# mkdir -p /data1/fb
  2. [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config set --root /data1/fb

以后网盘上传的数据会自动放在/data1/fb目录下。

5.启动与管理网盘系统

Linux下管理一个服务有两种方式:
(1)手动直接启动

  1. 要运行网盘系统,可执行如下命令:
  2. [root@server1 filebrowser]# nohup filebrowser -d /data/fb/filebrowser.db >/dev/null 2>&1 &
  3. #停止网盘系统,执行如下命令:
  4. [root@server1 filebrowser]# kill -9 $(pidof filebrowser)
  5. #设置服务开机自启动:
  6. [root@server1 filebrowser]# echo 'nohup filebrowser -d /data/fb/filebrowser.db >/dev/null 2>&1 &' >>/etc/rc.local
  7. [root@server1 filebrowser]# chmod +x /etc/rc.d/rc.local

(2)通过systemctl管理服务 

  1. 编写systemd服务脚本管理网盘系统,脚本内容如下:
  2. [root@Server00 /]# vim /etc/systemd/system/fb.service
  3. [Unit]
  4. Description=The filebrowser Process Manager
  5. After=network.target
  6. [Service]
  7. Type=simple
  8. ExecStart=/usr/sbin/filebrowser -d /data/fb/filebrowser.db
  9. ExecStop=/bin/killall filebrowser
  10. PrivateTmp=true
  11. [Install]
  12. WantedBy=multi-user.target
  1. 运行:systemctl start fb.service
  2. 停止运行:systemctl stop fb.service
  3. 开机启动:systemctl enable fb.service
  4. 取消开机启动:systemctl disable fb.service
  5. 查看运行状态:systemctl status fb.service

6.检验

输入服务器ip:8088,输入前面设置的admin账号密码即可登录。

  1. 访问不了则关闭防火墙:
  2. [root@Server00 /]# systemctl stop firewalld.service
  3. [root@Server00 /]# systemctl disable firewalld.service

 二、使用nginx实现私人网盘安全代理

1.反向代理

        要实现网盘安全稳定运行,我们还需要在网盘前端构建一个反向代理服务器,通过nginx屏蔽网盘系统直接暴露在网上,最大限度保障网盘安全。可见,反向代理保障了服务器的安全。

 2.正向代理

        正向代理是从客户端的角度出发,服务于特定用户,比如说一个局域网内的客户,以访问非特定的服务,例如当你用浏览器访问国外的网站(谷歌),被拒绝无法访问时,你可以在国外搭建一个代理服务器,这样就可以正常访问了。
        正向代理隐藏了用户,用户的请求被代理服务器接收代替,到了服务器,服务器并不知道用户是谁。而反向代理隐藏的是服务器。 

 3.部署nginx实现反向代理 

通过源码安装nginx,默认nginx会安装到/usr/local/nginx路径下,接着,找到nginx配置文件nginx.conf,在 http 段的server段注释掉下面内容:

  1. [root@Server00 /]# vim /usr/local/nginx/conf/nginx.conf
  2. #location / {
  3. # root html;
  4. # index index.html index.htm;
  5. #}
  6. 同时,添加如下内容:
  7. location / {
  8. proxy_pass http://192.168.177.128:8088;
  9. proxy_set_header Host $proxy_host;
  10. proxy_set_header X-Real-IP $remote_addr;
  11. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  12. }

        这段内容实现的就是反向代理功能,也就是用户请求先访问nginx,然后nginx通过反向代理功能将请求转发到后端的个人网盘对应的服务端口上。这里192.168.177.128是我安装网盘程序的服务器IP,开放的端口是8088.

4.验证

最后,每次修改完nginx配置文件都需要重新启动nginx服务:
systemctl restart nginx
最后,通过nginx所在服务器的80端口http://192.168.177.128直接就可以访问我们的网盘系统了。

5.可能会遇到的问题

        现在通过nginx反向代理,保障了后端网盘系统的安全,但也会带来一些问题,例如,在网盘系统中上传大文件的时候,可能出现如下错误:

查看nginx日志文件信息:

[root@Server00 /]# tail -f /usr/local/nginx/logs/error.log

2022/07/17 15:38:06 [error] 305603#0: *199 client intended to send too large body: 605228707 bytes,client: 192.168.177.128, server: localhost, request: "POST/api/resources/harbor-offline-installerv2.3.5.tgz?override=false HTTP/1.1", host: "192.168.177.128", referrer: http://192.168.177.128/files/

这个错误是说,nginx不允许上传这么大的文件. 

要取消这个限制,需要在nginx配置文件nginx.conf中的 http 模块增加如下配置:

client_max_body_size 500m;

其中,client_max_body_size表示允许上传单个文件的最大值,如果你要上传1GB大小的文件, 那么就修改这个值大于1GB。

 三、使用nginx实现https加密传输

1.搞懂http与https

        HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。
        HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版本,HTTPS协议是利用SSL+HTTP协议建立安全信道,加密数据包,提供身份认证的网络协议,要比http协议安全。
HTTPS和HTTP的区别:
• http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
• http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
• 使用https协议需要申请证书,证书有收费和免费的。

现在网站几乎所有都开启了https协议,所以使用https已经是个趋势。

        个人网盘系统,需要保障数据安全、加密传输,所以,我们还需要设置域名访问网盘,并开启https加密传输。
        要实现这个功能,需要申请一个ssl证书,我们可以在阿里云申请一个免费的ssl证书,然后将证书绑定到我们服务器的nginx上,即可实现网盘数据加密传输。

2.阿里云申请ssl证书

前提:已有注册域名阿里域名注册地址

阿里云有一年的免费ssl证书可用,申请方式如下:

阿里云SSL证书购买

 验证成功后,点击下载nginx:

 解压后有两个证书:

 3.绑定ssl证书到nginx

        获取证书之后,将证书下载上传到/usr/local/nginx/conf/ssl目录下并绑定到我们服务器的nginx配置上即可,在nginx上配置ssl证书,需要在nginx.conf中 http模块 添加一个 server段,内容如下:

  1. [root@Server00 ~]# mkdir -p /usr/local/nginx/conf/ssl
  2. [root@Server00 /]# vim /usr/local/nginx/conf/nginx.conf
  3. server
  4. {
  5. listen 443 ssl; # https 默认端口
  6. server_name www.startsky.top; # 设置的域名
  7. ssl_certificate ssl/8132331_startsky.top.pem; # 阿里云证书文件
  8. ssl_certificate_key ssl/8132331_startsky.top.key; # 私钥文件
  9. ssl_prefer_server_ciphers on; # 以下是加密算法和强度相关
  10. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  11. ssl_ciphers "HIGH:!aNULL:!MD5";
  12. add_header X-Frame-Options DENY;
  13. add_header X-Content-Type-Options nosniff;
  14. add_header X-Xss-Protection 1;
  15. # 反向代理
  16. location / {
  17. proxy_pass http://192.168.177.128:8088;
  18. proxy_set_header Host $proxy_host;
  19. proxy_set_header X-Real-IP $remote_addr;
  20. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  21. }
  22. }

4.验证

重启nginx :systemctl restart nginx

在Windows配置本地域名解析,添加服务器ip和域名:

最后,再次通过域名访问网盘,如下图所示:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/207393
推荐阅读
相关标签
  

闽ICP备14008679号