使用Nginx实现简单的文件上传下载

server {
    listen 443 ssl;
    server_name dl.mydomain.cn;

    client_max_body_size 80M;
    client_body_buffer_size 4M;

    access_log /var/log/nginx/dl-mydomain_ssl.log;
    error_log /var/log/nginx/dl-mydomain_ssl.err error;

    ssl_certificate /etc/letsencrypt/live/mydomain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydomain/privkey.pem;
    ssl_session_timeout 5m;
    add_header X-Frame-Options DENY;
    ssl_ciphers EECDH+AESGCM:EECDH+AES256:EECDH+AES128:-DHE-RSA-AES256-SHA:-DHE-RSA-AES128-SHA:-DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    root /var/www/files;

    location / {
        autoindex on;

        if ($http_x_auth_token != "secret123") {
            return 404;
        }

        try_files $uri $uri/ =404;
    }
    location /upload {
        if ($http_x_auth_token != "secret456") {
            return 404;
        }
        # 启用WebDAV
        dav_methods PUT;
        
        # 存储路径
        root /var/www/uploads;
        
        # 权限设置
        create_full_put_path on;
        dav_access user:rw group:rw all:rw;
        
        # 限制文件大小
        client_max_body_size 100M;
    }
    # 上传完成后的处理(返回成功信息)
    location /upload_done {
        return 200 "Upload completed! File: $upload_file_name";
    }
}
mkdir -p /var/www/uploads
chmod 777 /var/www/uploads  # 根据实际情况调整权限
nginx -s reload

文件会上传到 /var/www/uploads/upload下