mnemo_cards/tools/deploy/fix-nginx-upload-limit.sh
2025-11-21 12:31:34 +03:00

77 lines
2.6 KiB
Bash
Executable file

#!/bin/bash
# Script to fix nginx 413 error by increasing client_max_body_size
# This script updates nginx configuration on the server for all domains
# including Forgejo (git push), VSCode, and web apps
set -e
SERVER_IP="147.45.152.129"
SERVER_USER="root"
MAX_SIZE="1000M"
echo "🔧 Fixing nginx upload limit (413 error) on server..."
ssh "$SERVER_USER@$SERVER_IP" << 'EOF'
set -e
echo "📝 Checking current nginx configurations..."
# Update global nginx config
if ! grep -q "client_max_body_size" /etc/nginx/nginx.conf; then
echo "Adding client_max_body_size to global nginx config..."
sed -i '/http {/a\ client_max_body_size 1000M;' /etc/nginx/nginx.conf
else
echo "Updating existing client_max_body_size in global config..."
sed -i 's/client_max_body_size.*$/client_max_body_size 1000M;/' /etc/nginx/nginx.conf
fi
# Update all site configs in sites-available
echo "Updating all site configurations..."
for conf in /etc/nginx/sites-available/*; do
if [ -f "$conf" ]; then
echo "Processing: $conf"
# Remove all existing client_max_body_size lines to avoid duplicates
sed -i '/client_max_body_size/d' "$conf"
# Add client_max_body_size once in each server block (after first server_name)
# Use awk to add only once per server block
awk '
/server \{/ { in_server=1; added=0 }
/\}/ && in_server { in_server=0 }
{ print }
/server_name/ && in_server && !added {
print " client_max_body_size 1000M;"
added=1
}
' "$conf" > "$conf.tmp" && mv "$conf.tmp" "$conf"
fi
done
echo "🧪 Testing nginx configuration..."
/usr/sbin/nginx -t
if [ $? -eq 0 ]; then
echo "✅ Nginx configuration is valid"
echo "🔄 Reloading nginx..."
/usr/bin/systemctl reload nginx
echo "✅ Nginx reloaded successfully"
echo ""
echo "📊 Summary:"
echo " - client_max_body_size set to 1000M globally"
echo " - All site configurations updated"
echo " - Git push should now work without 413 errors"
echo ""
echo "Current client_max_body_size in configs:"
grep -r "client_max_body_size" /etc/nginx/ 2>/dev/null | grep -v ".default" || echo " (checking...)"
else
echo "❌ Nginx configuration test failed"
exit 1
fi
EOF
echo ""
echo "✅ Done! Git push should now work without 413 errors."
echo "💡 If you still get 413, try increasing MAX_SIZE in this script."