diff --git a/404 b/404 new file mode 100644 index 0000000..f2b1b9e --- /dev/null +++ b/404 @@ -0,0 +1,541 @@ +#!/bin/bash + +# 日系动漫风格404页面一键部署脚本 +# 适用于Nginx反向代理环境 + +set -e + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# 日志函数 +log_info() { + echo -e "${BLUE}[INFO]${NC} $1" +} + +log_success() { + echo -e "${GREEN}[SUCCESS]${NC} $1" +} + +log_warning() { + echo -e "${YELLOW}[WARNING]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +# 检查root权限 +check_root() { + if [[ $EUID -eq 0 ]]; then + log_warning "正在使用root权限执行脚本" + else + log_error "此脚本需要root权限来修改Nginx配置" + exit 1 + fi +} + +# 检查Nginx是否安装 +check_nginx() { + if ! command -v nginx &> /dev/null; then + log_error "Nginx未安装,请先安装Nginx" + exit 1 + fi + log_success "Nginx已安装" +} + +# 创建404页面 +create_404_page() { + local html_path="/usr/share/nginx/html/404.html" + + log_info "正在创建日系动漫风格404页面..." + + cat > "$html_path" << 'EOF' + + + + + + 页面未找到 - 404错误 + + + +
+
+
🌸
+
+
🐱
+
+ +
+
+
+
+
+
+
+
+
+
+
+ +
404
+

おっと!ページが見つかりません

+

申し訳ありませんが、お探しのページは存在しないか、移動した可能性があります。
+ 迷子になったキャラクターのように、ページもどこかへ行ってしまったようです。

+ +
+ ホームに戻る + 前のページに戻る +
+
+ + + + +EOF + + log_success "404页面已创建: $html_path" +} + +# 配置Nginx +configure_nginx() { + local nginx_conf_dir="/etc/nginx" + local sites_available_dir="$nginx_conf_dir/sites-available" + local sites_enabled_dir="$nginx_conf_dir/sites-enabled" + + log_info "正在配置Nginx..." + + # 检查配置目录是否存在 + if [[ ! -d "$sites_available_dir" ]]; then + log_error "Nginx配置目录不存在: $sites_available_dir" + log_info "请确保Nginx已正确安装" + exit 1 + fi + + # 查找主要的Nginx配置文件 + local main_config="" + if [[ -f "$nginx_conf_dir/nginx.conf" ]]; then + main_config="$nginx_conf_dir/nginx.conf" + fi + + # 在http块中添加404配置 + if [[ -n "$main_config" ]]; then + # 备份原配置 + cp "$main_config" "$main_config.backup.$(date +%Y%m%d%H%M%S)" + log_info "已备份原配置: $main_config.backup.*" + + # 检查是否已存在404配置 + if grep -q "error_page 404" "$main_config"; then + log_warning "404配置已存在,将更新配置" + # 可以在这里添加更新逻辑 + else + # 在http块中添加404配置 + sed -i '/http {/a\\terror_page 404 /404.html;\n\tlocation = /404.html {\n\t\troot /usr/share/nginx/html;\n\t\tinternal;\n\t}' "$main_config" + log_success "已在主配置文件中添加404配置" + fi + fi + + # 为每个站点配置添加404页面 + for config_file in "$sites_available_dir"/*; do + if [[ -f "$config_file" ]]; then + local config_name=$(basename "$config_file") + log_info "处理站点配置: $config_name" + + # 备份原配置 + cp "$config_file" "$config_file.backup.$(date +%Y%m%d%H%M%S)" + + # 检查是否已存在404配置 + if ! grep -q "error_page 404" "$config_file"; then + # 在server块中添加404配置 + sed -i '/server {/a\\terror_page 404 /404.html;' "$config_file" + sed -i '/error_page 404/a\\tlocation = /404.html {\n\t\troot /usr/share/nginx/html;\n\t\tinternal;\n\t}' "$config_file" + log_success "已为 $config_name 添加404配置" + else + log_info "$config_name 已有404配置,跳过" + fi + fi + done +} + +# 测试Nginx配置 +test_nginx() { + log_info "测试Nginx配置..." + if nginx -t; then + log_success "Nginx配置测试通过" + return 0 + else + log_error "Nginx配置测试失败" + return 1 + fi +} + +# 重新加载Nginx +reload_nginx() { + log_info "重新加载Nginx配置..." + if systemctl reload nginx; then + log_success "Nginx已重新加载" + return 0 + else + log_error "Nginx重新加载失败" + return 1 + fi +} + +# 显示完成信息 +show_completion() { + echo + log_success "日系动漫风格404页面部署完成!" + echo + log_info "部署详情:" + log_info "- 404页面位置: /usr/share/nginx/html/404.html" + log_info "- Nginx配置已更新" + log_info "- 所有站点现在都会显示自定义404页面" + echo + log_info "您可以通过访问一个不存在的URL来测试404页面" + log_info "例如: curl -I http://your-domain/not-exist-page" + echo +} + +# 主函数 +main() { + echo + log_info "开始部署日系动漫风格404页面..." + echo + + # 检查环境 + check_root + check_nginx + + # 执行部署步骤 + create_404_page + configure_nginx + + # 测试并重新加载Nginx + if test_nginx; then + reload_nginx + show_completion + else + log_error "部署失败,请检查Nginx配置" + exit 1 + fi +} + +# 显示使用说明 +usage() { + echo "日系动漫风格404页面一键部署脚本" + echo + echo "使用方法: $0 [选项]" + echo + echo "选项:" + echo " -h, --help 显示此帮助信息" + echo " -i, --install 执行安装部署" + echo + echo "示例:" + echo " $0 --install 部署404页面" +} + +# 参数处理 +case "${1:-}" in + -h|--help) + usage + exit 0 + ;; + -i|--install|"") + main + ;; + *) + log_error "未知选项: $1" + usage + exit 1 + ;; +esac