使用nginx搭建文件下载服务器 作者: 毕世平 时间: 2020-10-05 分类: 默认分类 前言:估计很多喜欢折腾的朋友手里都有不少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 **参考链接**: - [OpenSSL命令---passwd](https://blog.csdn.net/as3luyuan123/article/details/14917959 "OpenSSL命令---passwd") - [用nginx搭建简单的文件下载服务器](https://blog.csdn.net/guang11cheng/article/details/60965294 "用nginx搭建简单的文件下载服务器") 标签: none