413 字
2 分钟
在Nginx中快速建立一个下载站
利用Nginx的反代特性,将VPS中的文件经过HTTP协议路径映射,实现URL下载。
正在计算文章时效性...
Nginx相关配置
# ==================== Download - HTTP ====================server { listen 80; server_name <your-domain>;
# HTTP自动跳转HTTPS return 301 https://$host$request_uri;}
# ==================== Download - HTTPS ====================server { listen 443 ssl http2; server_name d<your-domain>;
ssl_certificate /etc/letsencrypt/live/<your-domain>/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/<your-domain>/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/downloads; client_max_body_size 500m; charset utf-8; add_header Cache-Control "no-cache, no-store, must-revalidate";
# 目录浏览(非必须) #location / { # autoindex on; # autoindex_exact_size off; # autoindex_localtime on; #}
# 大文件强制下载 location ~* \.(exe|msi|zip|tar|gz|rar|7z|dmg|iso|deb|rpm|apk|jar)$ { add_header Content-Disposition "attachment"; add_header Cache-Control "no-cache, no-store, must-revalidate"; }
sendfile on; tcp_nopush on; # 禁止访问隐藏文件 location ~ /\. { deny all; }}- 注:这里配置默认开启SSL,请使用Certbot申请SSL证书(详见笔者往期博文)
Shell终端操作
# 创建下载根目录mkdir /var/www/downloads# 将文件转移至下载根目录mv ~/test.txt /var/www/downloads/test.txt# 配置Nginx(将上文配置复制)nano /etc/nginx/sites-available/default# 检查格式,重启服务nginx -tsudo systemctl reload nginx此时访问https://<your-doman>/test.txt即可自动下载该文件。
特定SSH用户
如果有CI/CD需求,我们可以创建一个deploy用户,用于进行SFTP的发布文件上传。
# 创建用户deploysudo useradd -m -s /bin/bash deploy# 创建ssh目录并授予权限sudo mkdir -p /home/deploy/.sshsudo touch /home/deploy/.ssh/authorized_keyssudo chown -R deploy:deploy /home/deploy/.sshsudo chmod 755 /home/deploysudo chmod 700 /home/deploy/.sshsudo chmod 600 /home/deploy/.ssh/authorized_keys# 安装acl授权应用,授予deploy用户对downloads及其未来子目录的权限sudo apt install acl -ysudo setfacl -R -m u:deploy:rwx /var/www/downloadssudo setfacl -R -d -m u:deploy:rwx /var/www/downloads# 检查下载根目录权限getfacl /var/www/downloads# 安装rsync用于SSH隧道的文件同步上传sudo apt update && sudo apt install rsync -y
# 将公钥写入authorized,随后便可以由CD使用rsync方式上传文件到下载站VPS目录nano /home/deploy/.ssh/authorized_keys发现错误或想要改进这篇文章?
在Nginx中快速建立一个下载站
https://blog.srprolin.top/posts/nginx-download/