diff --git a/fix-nginx-upload-limit.sh b/fix-nginx-upload-limit.sh new file mode 100644 index 0000000..17380f6 --- /dev/null +++ b/fix-nginx-upload-limit.sh @@ -0,0 +1,130 @@ +#!/bin/bash + +################################################################################ +# 玩玩云 - Nginx上传限制快速修复脚本 +# 将上传限制从默认值改为10GB,超时时间改为1小时 +################################################################################ + +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' + +echo -e "${BLUE}╔═══════════════════════════════════════════════════════════════╗${NC}" +echo -e "${BLUE}║ 玩玩云 - Nginx上传限制快速修复脚本 ║${NC}" +echo -e "${BLUE}╚═══════════════════════════════════════════════════════════════╝${NC}" +echo "" + +# 检查root权限 +if [[ $EUID -ne 0 ]]; then + echo -e "${RED}✗ 此脚本需要root权限运行${NC}" + echo -e "${YELLOW}请使用: sudo bash fix-nginx-upload-limit.sh${NC}" + exit 1 +fi + +# 查找Nginx配置文件 +NGINX_CONF="" +if [[ -f /etc/nginx/sites-available/wanwanyun.conf ]]; then + NGINX_CONF="/etc/nginx/sites-available/wanwanyun.conf" +elif [[ -f /etc/nginx/conf.d/wanwanyun.conf ]]; then + NGINX_CONF="/etc/nginx/conf.d/wanwanyun.conf" +else + echo -e "${RED}✗ 未找到Nginx配置文件${NC}" + exit 1 +fi + +echo -e "${GREEN}✓ 找到配置文件: $NGINX_CONF${NC}" +echo "" + +# 备份原配置 +BACKUP_FILE="${NGINX_CONF}.backup-$(date +%Y%m%d-%H%M%S)" +cp "$NGINX_CONF" "$BACKUP_FILE" +echo -e "${GREEN}✓ 已备份配置到: $BACKUP_FILE${NC}" +echo "" + +# 检查是否已经配置过 +if grep -q "client_max_body_size 10G" "$NGINX_CONF"; then + echo -e "${YELLOW}⚠ 配置已经是10GB,无需修改${NC}" + exit 0 +fi + +echo -e "${BLUE}正在修改Nginx配置...${NC}" + +# 创建临时文件 +TEMP_FILE=$(mktemp) + +# 处理配置文件 +awk ' +/^server \{/ { in_server=1 } +in_server && /server_name/ && !added_size { + print + print "" + print " # 文件上传大小限制(10GB)" + print " client_max_body_size 10G;" + added_size=1 + next +} +in_server && /location \/api/ { in_api=1 } +in_api && /proxy_set_header X-Forwarded-Proto/ { + print + print "" + print " # 上传超时设置(大文件上传需要更长时间,设置为1小时)" + print " proxy_read_timeout 3600s;" + print " proxy_send_timeout 3600s;" + print " proxy_connect_timeout 300s;" + in_api=0 + next +} +# 删除旧的超时设置 +/proxy_read_timeout/ && in_api { next } +/proxy_send_timeout/ && in_api { next } +/proxy_connect_timeout/ && in_api { next } +# 删除旧的 client_max_body_size +/client_max_body_size/ { next } +{ print } +' "$NGINX_CONF" > "$TEMP_FILE" + +# 替换原文件 +mv "$TEMP_FILE" "$NGINX_CONF" + +echo -e "${GREEN}✓ 配置已更新${NC}" +echo "" + +# 测试Nginx配置 +echo -e "${BLUE}测试Nginx配置...${NC}" +if nginx -t 2>&1 | grep -q "successful"; then + echo -e "${GREEN}✓ Nginx配置测试通过${NC}" + echo "" + + # 重载Nginx + echo -e "${BLUE}重载Nginx服务...${NC}" + systemctl reload nginx + + if [[ $? -eq 0 ]]; then + echo -e "${GREEN}✓ Nginx已重载${NC}" + echo "" + echo -e "${GREEN}╔═══════════════════════════════════════════════════════════════╗${NC}" + echo -e "${GREEN}║ ✓ 修复完成! ║${NC}" + echo -e "${GREEN}╚═══════════════════════════════════════════════════════════════╝${NC}" + echo "" + echo -e "${BLUE}新的配置:${NC}" + echo " • 上传大小限制: 10GB" + echo " • 读取超时: 3600秒 (1小时)" + echo " • 发送超时: 3600秒 (1小时)" + echo " • 连接超时: 300秒 (5分钟)" + echo "" + echo -e "${YELLOW}注意: 请确保您的磁盘空间足够存储大文件!${NC}" + else + echo -e "${RED}✗ Nginx重载失败${NC}" + echo -e "${YELLOW}正在恢复备份...${NC}" + cp "$BACKUP_FILE" "$NGINX_CONF" + systemctl reload nginx + exit 1 + fi +else + echo -e "${RED}✗ Nginx配置测试失败${NC}" + echo -e "${YELLOW}正在恢复备份...${NC}" + cp "$BACKUP_FILE" "$NGINX_CONF" + exit 1 +fi