service nginx restart
service nginx force-reload
systemctl status nginx
常用的文件共享有三种:FTP、Samba、WebDAV,它们各有优缺点,了解后才能更好地根据自己的需求选择方案。
FTP属于古老的文件共享方式了,因为安全性,现代浏览器最新已默认不能打开FTP协议。SFTP在FTP基础上增加了加密,在Linux上安装OpenSSH后可以直接用SFTP协议传输。使用SFTP临时传送文件还可以,但做文件共享,性能不高,速度较慢。
Samba是Linux下CIFS协议的实现,优势在于对于小白使用简章,和Windows系统文件共享访问一样,不需要安装第三方软件,而且移动端也有大量APP支持。苹果手机文件APP中添加网络存储用的就是这种方式。Windows下文件共享使用445端口,且不能更改。445端口常常受黑客关照,在广域网上大多运营封掉了访端口,所以这种文件共享只适合在内网使用。
WebDAV 基于 HTTP 协议的通信协议,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。因为基于HTTP,在广域网上共享文件有天然的优势,移动端文件管理APP也大多支持WebDAV协议。使用HTTPS还能保安全性。Apache和Nginx支持WebDAV,可作为WebDAV文件共享服务器软件。也可以使用专门的WebDAV软件部署。
# 第一步:获取可执行单文件
wget https://hub.fastgit.org/hacdias/webdav/releases/download/v4.1.1/linux-amd64-webdav.tar.gz
# 解压缩
tar -zxf linux-amd64-webdav.tar.gz
# 第二步:建立配置文件
# config.yml
```
# Server related settings
address: 0.0.0.0
port: 8080
auth: true
tls: false
cert: cert.pem
key: key.pem
prefix: /
# Default user settings (will be merged)
scope: .
modify: true
rules: []
# CORS configuration
cors:
enabled: true
credentials: false
allowed_headers:
- Depth
allowed_hosts:
- http://localhost:*
allowed_methods:
- GET
- POST
- HEAD
- PUT
exposed_headers:
- Content-Length
- Content-Range
users:
# 这里是示例
- username: admin
password: admin
scope: /a/different/path
- username: encrypted
password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"
- username: "{env}ENV_USERNAME"
password: "{env}ENV_PASSWORD"
- username: basic
password: basic
modify: false
rules:
- regex: false
allow: false
path: /some/file
- path: /public/access/
modify: true
```
# 第三步:测试是否可用
webdav -c config.yml
#查看系统端口
netstat -nltp
# 如果有8080端口开放说明成功
接下来我们利用systemd和Nginx让云存储成为一种可靠的基础设施。
# 第一步:建立systemd的service文件
# webdav.service
# 注意,这里我们的程序只有单文件,命令也只有一行,所以比较简单
# 分为单元、服务、安装三个部分
# Unit部分标明名称和依赖
[Unit]
Description=WebDAV server
After=network.target
# service标明运行类型、用户以及执行行为命令
[Service]
Type=simple
User=root
ExecStart=/root/webdav/webdav -c /root/webdav/config.yml
Restart=on-failure
# install表示开机启动的依赖
[Install]
WantedBy=multi-user.target
# 第二步:移动到systemd service目录
cp webdav.service /usr/lib/systemd/system/webdav.service
# 第三步:启动服务并加入启动项中
service webdav start
systemctl enable webdav
# 查看服务情况
systemctl status webdav
加入至systemd service的应用程序将同样受CGroup监管,可以通过通过配置service文件进行cpu、内存资源的限定,也可以通过命令对资源进行限定。
# 限定cpu资源命令举例
systemctl set-property webdav.service CPUShares=50
# 查看CGroup资源消耗情况
systemd-cgtop
服务已经建好了,但不安全,当然也没法满足负载均衡的要求。在这里,我们将它挂到nginx上做反向代理为https。这时候,我们只需要访问我们的https://<域名或者IP>/webdav/,输入用户名和密码即可实现云存储的访问。
location /webdav {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
通过已有的一些客户端软件可以实现不同操作系统下的云盘操作,例如windows下面的Winscp、安卓下的MiXplorer等,当然许多APP支持WebDAV协议的数据备份。
最后,将阿里云的控制台里的安全组设置一下,我们做完之后并不需求80端口和8080端口对外开放,用户也能使用到安全的https服务。
联系客服