#!/bin/bash # Nginx Autoindex 文件列表部署脚本 # 自动部署美化版的nginx文件列表系统 set -e echo "================================" echo "Nginx Autoindex 文件列表部署脚本" echo "================================" echo "" # 检测nginx是否安装 echo "检查nginx是否已安装..." if ! command -v nginx &> /dev/null; then echo "❌ 错误: 未检测到nginx" echo "请先安装nginx: sudo apt-get install nginx" exit 1 fi echo "✓ nginx已安装: $(nginx -v 2>&1)" echo "" # 设置变量 AUTOINDEX_DIR="/var/www/autoindex" FILES_DIR="/var/www/files" NGINX_CONFIG="/etc/nginx/sites-available/autoindex-files" NGINX_ENABLED="/etc/nginx/sites-enabled/autoindex-files" # 检测是否为root用户 if [ "$EUID" -ne 0 ]; then echo "❌ 请使用root权限运行此脚本: sudo ./deploy.sh" exit 1 fi echo "开始部署..." echo "" # 1. 创建目录 echo "1. 创建必要目录..." mkdir -p "$AUTOINDEX_DIR" mkdir -p "$FILES_DIR" echo "✓ 目录创建完成" echo "" # 2. 复制header.html echo "2. 部署header.html..." cat > "$AUTOINDEX_DIR/header.html" << 'EOF'

📁 文件列表

EOF echo "✓ header.html部署完成" echo "" # 3. 复制footer.html echo "3. 部署footer.html..." cat > "$AUTOINDEX_DIR/footer.html" << 'FOOTEREOF'

由 nginx autoindex 提供支持

FOOTEREOF echo "✓ footer.html部署完成" echo "" # 4. 创建nginx配置 echo "4. 创建nginx配置..." cat > "$NGINX_CONFIG" << 'EOF' # nginx autoindex 美化配置 server { listen 80; server_name _; root /var/www/files; charset utf-8; location / { # 启用autoindex autoindex on; autoindex_exact_size off; # 显示KB/MB而不是字节 autoindex_localtime on; # 使用本地时间 autoindex_format html; # 注入自定义样式 add_before_body /autoindex-header.html; add_after_body /autoindex-footer.html; } # 提供header文件 location = /autoindex-header.html { alias /var/www/autoindex/header.html; } # 提供footer文件 location = /autoindex-footer.html { alias /var/www/autoindex/footer.html; } # 禁止访问隐藏文件 location ~ /\. { deny all; return 404; } } EOF echo "✓ nginx配置创建完成" echo "" # 5. 启用配置 echo "5. 启用nginx配置..." # 删除默认配置 if [ -f "/etc/nginx/sites-enabled/default" ]; then rm -f /etc/nginx/sites-enabled/default echo "✓ 已删除默认配置" fi # 创建软链接 ln -sf "$NGINX_CONFIG" "$NGINX_ENABLED" echo "✓ 配置已启用" echo "" # 6. 设置权限 echo "6. 设置目录权限..." chmod 755 "$AUTOINDEX_DIR" chmod 644 "$AUTOINDEX_DIR"/*.html chmod 755 "$FILES_DIR" echo "✓ 权限设置完成" echo "" # 7. 测试nginx配置 echo "7. 测试nginx配置..." if nginx -t 2>&1 | grep -q "successful"; then echo "✓ nginx配置测试通过" else echo "❌ nginx配置测试失败" nginx -t exit 1 fi echo "" # 8. 重载nginx echo "8. 重载nginx服务..." systemctl reload nginx echo "✓ nginx已重载" echo "" # 9. 创建示例文件 echo "9. 创建示例文件..." cat > "$FILES_DIR/README.md" << 'EOF' # 欢迎使用文件列表系统 这是一个美化版的nginx autoindex文件列表系统。 ## 功能特点 - 搜索文件 - 复制文件链接 - 美观的界面 - 文件/文件夹颜色区分 将你的文件放到 /var/www/files 目录即可。 EOF # 创建示例目录 mkdir -p "$FILES_DIR/documents" mkdir -p "$FILES_DIR/images" mkdir -p "$FILES_DIR/downloads" echo "✓ 示例文件创建完成" echo "" echo "================================" echo "✅ 部署完成!" echo "================================" echo "" echo "访问地址: http://$(hostname -I | awk '{print $1}')" echo "" echo "文件存放目录: $FILES_DIR" echo "配置文件位置: $NGINX_CONFIG" echo "" echo "提示:" echo "- 将文件放到 $FILES_DIR 即可在网页上看到" echo "- 修改配置后运行: sudo systemctl reload nginx" echo ""