Featured image of post Nginx + Caddy 文件服务器部署指南 🚀

Nginx + Caddy 文件服务器部署指南 🚀

Nginx + Caddy 文件服务器部署指南 🚀 🌟 概述 本指南介绍如何使用 Nginx 和 Caddy &#

Nginx + Caddy 文件服务器部署指南 🚀

File Server Setup


🌟 概述

本指南介绍如何使用 Nginx 和 Caddy 搭建高性能的文件下载服务器,实现负载均衡和高可用性。


📋 部署架构

1
用户请求 → Nginx (负载均衡) → Caddy (文件服务)

🔧 Caddy 文件服务器部署

Caddy 部署文件下载服务器教程:
https://t.mobufan.eu.org:666/archives/911/#cl-2


⚡ Nginx 反向代理配置

Nginx 下载服务地址:

https://file.mobufan.eu.org:666

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 创建配置目录和文件
mkdir -pm 755 /etc/nginx/conf.d
touch /etc/nginx/conf.d/file.conf

# 生成 Nginx 配置文件
cat <<'EOF' > /etc/nginx/conf.d/file.conf
## nginx 反向代理+负载均衡: caddy 下载服务
upstream mysvr1 { 
    server 10.10.10.245:11300;
    ## 负载均衡-热备模式:有2台服务器,一台服务器宕机时,才启用第二台服务器提供服务
    server 10.10.10.247:11300 backup;  ## 热备     
}

server {
    ## 监听666端口,并启用SSL
    listen 666 ssl;
    listen [::]:666 ssl;

    ## 替换为你的域名
    server_name file.mobufan.eu.org;

    ## SSL 证书配置
    ssl_certificate /etc/nginx/keyfile/cert.pem;  
    ssl_certificate_key /etc/nginx/keyfile/key.pem;  
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        ## 反向代理到负载均衡组
        proxy_pass http://mysvr1;
        
        ## 添加调试头信息
        add_header backendIP $upstream_addr;
        add_header backendCode $upstream_status;
        
        ## 传递必要的头信息
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Range $http_range;
        proxy_set_header If-Range $http_if_range;
        
        proxy_redirect off;
        proxy_buffering on; ## 开启缓存
        proxy_http_version 1.1;
    }
}
EOF

# 重启 Nginx 服务
sudo systemctl restart nginx

📁 文件路径管理

1. 本地文件存储路径

1
/mnt/file

2. 进入文件目录

1
cd /mnt/file && ls -la

3. 文件下载示例

简单下载(下载到当前目录):

1
curl -# -O https://file.mobufan.eu.org:666/my-sh/rsync/hosts.sh

指定目录和文件名下载:

1
2
mkdir -p /mnt/test
curl -# -L -o /mnt/test/hosts.sh https://file.mobufan.eu.org:666/my-sh/rsync/hosts.sh

添加执行权限:

1
2
chmod +x /mnt/test/hosts.sh
ls -la /mnt/test/

🛠️ 高级配置选项

1. 性能优化配置

1
2
3
4
5
# 在 location / 块中添加以下配置
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;

2. 安全增强配置

1
2
3
4
# 限制文件大小和下载速度
client_max_body_size 10G;
limit_rate_after 100m;
limit_rate 10m;

3. 日志记录配置

1
2
3
4
5
6
7
# 添加访问日志格式
log_format download '$remote_addr - $remote_user [$time_local] '
                   '"$request" $status $body_bytes_sent '
                   '"$http_referer" "$http_user_agent" '
                   '"$upstream_addr" "$upstream_status"';

access_log /var/log/nginx/download.access.log download;

🔍 故障排查

1. 检查 Nginx 配置

1
sudo nginx -t

2. 查看 Nginx 状态

1
sudo systemctl status nginx

3. 监控实时日志

1
2
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

4. 测试下载功能

1
2
3
4
5
# 测试文件是否存在
curl -I https://file.mobufan.eu.org:666/my-sh/rsync/hosts.sh

# 测试下载速度
time curl -o /dev/null https://file.mobufan.eu.org:666/my-sh/rsync/hosts.sh

🚀 性能优化建议

  1. 启用 Gzip 压缩 - 减少传输数据量
  2. 配置缓存 - 提高重复访问速度
  3. 使用 CDN - 加速全球访问
  4. 监控系统资源 - 确保服务器稳定运行
  5. 定期清理日志 - 避免磁盘空间不足

📊 监控和维护

1. 设置监控告警

1
2
3
4
5
6
7
8
# 监控磁盘空间
df -h /mnt/file

# 监控内存使用
free -h

# 监控网络流量
iftop -i eth0

2. 自动化备份

1
2
3
4
# 创建备份脚本
#!/bin/bash
tar -czf /backup/file-server-$(date +%Y%m%d).tar.gz /mnt/file
find /backup -name "file-server-*.tar.gz" -mtime +30 -delete

🎯 使用场景

这个文件服务器架构适用于:

  • 🏢 企业内部文件共享
  • 🌐 公开软件分发
  • 📦 大文件下载服务
  • 🔄 多节点负载均衡
  • 🛡️ 高可用性部署

通过这个完整的 Nginx + Caddy 文件服务器解决方案,您可以搭建一个高性能、高可用的文件下载服务!🎉