前言:估计很多喜欢折腾的朋友手里都有不少vps和域名,只是可惜的是,好多都拿来吃灰了。vps有一个比较大的优势就是:地处机房,网络带宽足,我们完全可以利用这点下(合规)bt/种子资源,然后服务端安装相应的媒体服务器比如plex
,jellyfin
来使用它,我们甚至可以用caddy
或者nginx
网页端在线看下好的视频,扯远了......
本文介绍一种方法,让你的vps派上用场,你可以拿它做文件共享。具体实现目标是:让你可以通过访问https://example.com
来访问相应目录下的文件,可查看可下载,并且你可以给这个访问设置一个访问验证。
准备条件:
- 一个域名,证书可使用Cloudflare提供的
- 一台有公网IP的VPS服务器
- 一台方便操作的本地电脑
一、获取/etc/nginx压缩包
执行下面命令前,你需要先安装好docker
,这里不再赘述安装方法:
# 拉取nginx镜像
docker pull nginx:stable
# 先创建一个nginx容器,选/root/nginx为映射目录
docker run -d \
--name nginx \
--net host \
-v /root/nginx:/root/nginx \
nginx:stable
# 进入容器,执行操作
docker exec -it nginx bash
# 切换到/etc/目录,将/etc/nginx打包,并拷贝到/root/nginx目录下
cd /etc/ && tar -zcf nginx.tar.gz ./nginx/ && cp nginx.tar.gz /root/nginx/
#退出容器(回到宿主机shell环境)
exit
# 移除容器
docker rm -f nginx
二、创建密钥文本文件
上面移除容器后,宿主机/root/nginx
目录下仍然存在nginx.tar.gz
的压缩包,下面进行解压,并进行一系列相关操作:
# 将压缩包解压到/etc/目录下
tar -zxf /root/nginx/nginx.tar.gz -C /etc/
# 切换路径
cd /etc/nginx/conf.d
# 利用nginx内置的openssl创建标准密文
docker run --rm nginx:stable openssl passwd -crypt password
# 假设下面是命令结束输出的密文,那么这意味着当你使用admin:9nL8bmgcoY5HY 作为密钥文本内容时,
# 你的nginx登录用户名和密码分别是admin和password,实际密码以加密的形式存在了服务端文本中
9nL8bmgcoY5HY
# 创建密钥文本
echo admin:9nL8bmgcoY5HY > ./httppasswd
三、修改default.conf文件
本文默认不修改/etc/nginx/nginx.conf
主配置文件,只在/etc/nginx/conf.d
目录下进行相关操作:
# 重命名
mv ./default.conf ./default.conf.bak
# 创建目录
mkdir html log
# vim site.conf
//下面是配置文件样例
server {
listen 80;
server_name example.com; # 这里输入你的域名
location / {
return 301 https://example.com$request_uri; # 将http重定向到https
}
}
server {
listen 443 ssl;
server_name example.com; # 这里填域名
access_log /etc/nginx/conf.d/log/access.log;
error_log /etc/nginx/conf.d/log/error.log;
ssl_certificate /etc/nginx/conf.d/cf.crt; #把证书和key重命名后放到此目录下
ssl_certificate_key /etc/nginx/conf.d/cf.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
location / {
root /etc/nginx/conf.d/html;
index index.html index.htm;
autoindex on; # 开启索引
autoindex_exact_size off; # 不显示确切大小
autoindex_localtime on;
auth_basic 'Restricted';
auth_basic_user_file /etc/nginx/conf.d/httppasswd;# 这里指定上面一步生成的密钥文本
}
}
//上面是配置文件样例
四、创建容器
vim run_nginx.sh
//下面是样例
#!/bin/bash
docker run -d \
--name nginx \
--restart always \
--net host \
-v /etc/nginx:/etc/nginx \
nginx:stable
//上面是样例
# 执行此文件,每次需要重新建容器,执行此命令即可
bash run_nginx.sh
参考链接: