IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 用nginx构建高效不限速的个人网盘(File Browser) -> 正文阅读

[系统运维]用nginx构建高效不限速的个人网盘(File Browser)

目录

一、源码编译安装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

[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

2.编写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

3.管理nginx服务

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

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

4.安装并配置网盘程序

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目录下。

5.启动与管理网盘系统

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

6.检验

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

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

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

1.反向代理

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

?2.正向代理

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

?3.部署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.

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段,内容如下:

[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;
    }
}

4.验证

重启nginx?:systemctl restart nginx

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

?

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

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:52:42  更:2022-07-21 21:52:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:11:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码