赞
踩
目录
也可以看我这篇文章: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
- [root@Server00 ~]# mkdir -p /home/nginx_tar
- [root@Server00 ~]# cd /home/nginx_tar/
- [root@Server00 nginx_tar]# tar -zxvf nginx-1.20.2.tar.gz
(3)编译安装
- [root@Server00 nginx_tar]# cd nginx-1.20.2
- [root@Server00 nginx-1.20.2]# ./configure --with-http_stub_status_module --with-http_ssl_module
- [root@Server00 nginx-1.20.2]# make && make install
-
- # --with-http_ssl_module 启用ssl证书
nginx编译完成后,默认安装路径为/usr/local/nginx
- [root@Server00 nginx]# vim /etc/systemd/system/nginx.service
-
- #输入下面代码
-
- [Unit]
- Description=The nginx HTTP and reverse proxy server
- After=network.target remote-fs.target nss-lookup.target
- [Service]
- Type=forking
- PIDFile=/usr/local/nginx/logs/nginx.pid
- ExecStartPre=/usr/bin/rm -f /usr/local/nginx/logs/nginx.pid
- ExecStartPre=/usr/local/nginx/sbin/nginx -t
- ExecStart=/usr/local/nginx/sbin/nginx
- ExecReload=/bin/kill -s HUP $MAINPID
- KillSignal=SIGQUIT
- TimeoutStopSec=5
- KillMode=process
- PrivateTmp=true
- [Install]
- WantedBy=multi-user.target

接着,就可以通过systemctl管理nginx服务了。
- systemctl start nginx #启动nginx服务
- systemctl stop nginx #关闭nginx服务
- systemctl reload nginx #重载nginx服务
- systemctl enable nginx #设置nginx服务开机自启动
- systemctl status nginx #查看nginx服务运行状态
filebrowser 是一个使用go语言编写的软件,功能是可以通过浏览器对服务器上的文件进行管理。可以是修改文件,或者是添加删除文件,甚至可以分享文件,是一个很棒的文件管理器,你甚至可以当成一个网盘来使用。总之使用非常简单方便,功能很强大。
下载地址:https://github.com/filebrowser/filebrowser/releases
官方文档:Welcome - File Browser
(1)安装网盘系统
- [root@Server00 ~]# cd /home/nginx_tar/
- [root@Server00 nginx_tar]# tar -zxvf linux-amd64-filebrowser.tar.gz
- [root@Server00 nginx_tar]# cp filebrowser /usr/sbin/ # 将网盘主程序文件复制到sbin目录
(2)配置网盘系统
- [root@Server00 nginx_tar]# mkdir -p /data/fb
-
- [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config init
- # 初始化
-
- [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config set --address 0.0.0.0
- # 绑定网卡,任何人都可以访问
-
- [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config set --port 8088
- # 配置网盘系统访问的端口为8088,可自定义
-
- [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config set --locale zh-cn
- # 设置语言为简体中文
-
- [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config set --log /var/log/filebrowser.log
- # 设置日志存放路径

(3)设置网盘系统登录用户名和密码
[root@Server00 /]# filebrowser -d /data/fb/filebrowser.db users add admin abc123456 --perm.admin
上面创建了一个用户是admin,密码是abc123456的管理员账号
(4)设置网盘系统共享数据目录
- [root@Server00 /]# mkdir -p /data1/fb
- [root@Server00 /]# filebrowser -d /data/fb/filebrowser.db config set --root /data1/fb
以后网盘上传的数据会自动放在/data1/fb目录下。
Linux下管理一个服务有两种方式:
(1)手动直接启动
- 要运行网盘系统,可执行如下命令:
- [root@server1 filebrowser]# nohup filebrowser -d /data/fb/filebrowser.db >/dev/null 2>&1 &
-
- #停止网盘系统,执行如下命令:
- [root@server1 filebrowser]# kill -9 $(pidof filebrowser)
-
- #设置服务开机自启动:
- [root@server1 filebrowser]# echo 'nohup filebrowser -d /data/fb/filebrowser.db >/dev/null 2>&1 &' >>/etc/rc.local
- [root@server1 filebrowser]# chmod +x /etc/rc.d/rc.local
(2)通过systemctl管理服务
- 编写systemd服务脚本管理网盘系统,脚本内容如下:
- [root@Server00 /]# vim /etc/systemd/system/fb.service
-
- [Unit]
- Description=The filebrowser Process Manager
- After=network.target
- [Service]
- Type=simple
- ExecStart=/usr/sbin/filebrowser -d /data/fb/filebrowser.db
- ExecStop=/bin/killall filebrowser
- PrivateTmp=true
- [Install]
- WantedBy=multi-user.target
- 运行:systemctl start fb.service
- 停止运行:systemctl stop fb.service
- 开机启动:systemctl enable fb.service
- 取消开机启动:systemctl disable fb.service
- 查看运行状态:systemctl status fb.service
输入服务器ip:8088,输入前面设置的admin账号密码即可登录。
- 访问不了则关闭防火墙:
- [root@Server00 /]# systemctl stop firewalld.service
- [root@Server00 /]# systemctl disable firewalld.service
要实现网盘安全稳定运行,我们还需要在网盘前端构建一个反向代理服务器,通过nginx屏蔽网盘系统直接暴露在网上,最大限度保障网盘安全。可见,反向代理保障了服务器的安全。
正向代理是从客户端的角度出发,服务于特定用户,比如说一个局域网内的客户,以访问非特定的服务,例如当你用浏览器访问国外的网站(谷歌),被拒绝无法访问时,你可以在国外搭建一个代理服务器,这样就可以正常访问了。
正向代理隐藏了用户,用户的请求被代理服务器接收代替,到了服务器,服务器并不知道用户是谁。而反向代理隐藏的是服务器。
通过源码安装nginx,默认nginx会安装到/usr/local/nginx路径下,接着,找到nginx配置文件nginx.conf,在 http 段的server段注释掉下面内容:
- [root@Server00 /]# vim /usr/local/nginx/conf/nginx.conf
-
- #location / {
- # root html;
- # index index.html index.htm;
- #}
-
- 同时,添加如下内容:
- location / {
- proxy_pass http://192.168.177.128:8088;
- proxy_set_header Host $proxy_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
这段内容实现的就是反向代理功能,也就是用户请求先访问nginx,然后nginx通过反向代理功能将请求转发到后端的个人网盘对应的服务端口上。这里192.168.177.128是我安装网盘程序的服务器IP,开放的端口是8088.
最后,每次修改完nginx配置文件都需要重新启动nginx服务:
systemctl restart nginx
最后,通过nginx所在服务器的80端口http://192.168.177.128直接就可以访问我们的网盘系统了。
现在通过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。
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上,即可实现网盘数据加密传输。
前提:已有注册域名阿里域名注册地址
阿里云有一年的免费ssl证书可用,申请方式如下:
验证成功后,点击下载nginx:
解压后有两个证书:
获取证书之后,将证书下载上传到/usr/local/nginx/conf/ssl目录下并绑定到我们服务器的nginx配置上即可,在nginx上配置ssl证书,需要在nginx.conf中 http模块 添加一个 server段,内容如下:
- [root@Server00 ~]# mkdir -p /usr/local/nginx/conf/ssl
- [root@Server00 /]# vim /usr/local/nginx/conf/nginx.conf
-
- server
- {
- listen 443 ssl; # https 默认端口
- server_name www.startsky.top; # 设置的域名
- ssl_certificate ssl/8132331_startsky.top.pem; # 阿里云证书文件
- ssl_certificate_key ssl/8132331_startsky.top.key; # 私钥文件
- ssl_prefer_server_ciphers on; # 以下是加密算法和强度相关
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_ciphers "HIGH:!aNULL:!MD5";
- add_header X-Frame-Options DENY;
- add_header X-Content-Type-Options nosniff;
- add_header X-Xss-Protection 1;
-
- # 反向代理
- location / {
- proxy_pass http://192.168.177.128:8088;
- proxy_set_header Host $proxy_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
- }

重启nginx :systemctl restart nginx
在Windows配置本地域名解析,添加服务器ip和域名:
最后,再次通过域名访问网盘,如下图所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。