NginX 反向代理

1.在阿里云中域名解析该IP

注意:一定要添加添加两种解析,@和*

微信截图_20260129165820.png
2.在1Panel面板中安装Nginx管理应用

注意:端口改成80、81、和443

微信截图_20260129165607.png
3.在Nginx中添加反向代理服务
微信截图_20260129165546.png
4.添加域名和IP地址及端口

注意:一定要打开Websockets 支持,否则探针无法连接小鸡

微信截图_20260129165701.png
5.申请SSL证书,域名填前面写的,并打开强制SSL

注意:不申请SSL证书也可使用,但只能使用http

微信截图_20260129165716.png

Nginx代码

server {
    listen 80;
    server_name chaofan.de

    location / {
        proxy_pass http://127.0.0.1:25774;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";

        # 禁用代理缓冲
        proxy_buffering off;

        # 允许大文件上传(50M)
        client_max_body_size 50M;
    }
}

TG通知优化代码

1.打开后台设置,开启通知,嵌入代码
微信截图_20260129170911.png

async function sendMessage(message, title) {
  const token = "8581109593:AAHRBFjPOWZRXfK93Dva8o1wRxY66NfbMIQ"
  const chatId = "-1003689301564"

  if (!token || token === 'REPLACE_WITH_TOKEN') {
    console.error('Telegram bot token 未设置 (TELEGRAM_BOT_TOKEN)。消息未发送。');
    return false;
  }
  if (!chatId || chatId === 'REPLACE_CHAT_ID') {
    console.error('Telegram chat id 未设置 (TELEGRAM_CHAT_ID)。消息未发送。');
    return false;
  }

  const url = `https://api.telegram.org/bot${token}/sendMessage`;

  const resp = await fetch(url, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      chat_id: chatId,
      // 使用简洁的 HTML 模板,避免输出敏感字段
      text: `<b>${title}</b>\n\n${message}`,
      parse_mode: 'HTML',
    }),
  });

  if (!resp.ok) {
    console.error('Failed to send message:', resp.status, resp.statusText);
    return false;
  }
  return true;
}

async function sendEvent(event) {
  try {
    // 格式化时间
    const formatTime = (timeStr) => {
      const date = new Date(timeStr);
      return date.toLocaleString('zh-CN', {
        year: 'numeric',
        month: '2-digit',
        day: '2-digit',
        hour: '2-digit',
        minute: '2-digit',
        second: '2-digit',
        timeZone: 'Asia/Shanghai'
      });
    };

    // 获取事件类型描述(带图标)
    const getEventTypeDesc = (eventType) => {
      const eventMap = {
        'Offline': '❌ 服务器离线',
        'Online': '✅ 服务器上线',
        'Alert': '⚠️ 监控告警',
        'Renew': '⏰ 服务器已自动续费',
        'Expire': '🚨 服务到期提醒',
        'Test': '🧪 测试通知'
      };
      return eventMap[eventType] || `📊 ${eventType}`;
    };

    // 获取事件类型描述(不带图标,用于详细信息)
    const getEventTypeText = (eventType) => {
      const eventMap = {
        'Offline': '服务器离线',
        'Online': '服务器上线',
        'Alert': '监控告警',
        'Renew': '服务器已自动续费',
        'Expire': '服务到期提醒',
        'Test': '测试通知'
      };
      return eventMap[eventType] || eventType;
    };

    // 生成服务器信息
    const generateClientSummary = (client) => {
      let parts = [];
      if (client.name) parts.push(client.name);
      if (client.region) parts.push(client.region);
      if (client.flag) parts.push(client.flag);
      return parts.join(' • ');
    };

    // 构建消息
    let message = '';
    const eventTypeDesc = getEventTypeDesc(event.event);
    
    // 输出服务器:    
    if (event.clients && event.clients.length > 0) {
      if (event.clients.length === 1) {
        message += `服务器:${generateClientSummary(event.clients[0])}\n`;
      } else {
        // 多个服务器时,只显示第一个,然后显示总数
        message += `服务器:${generateClientSummary(event.clients[0])}\n`;
        if (event.clients.length > 1) {
          message += `(共 ${event.clients.length} 台服务器)\n`;
        }
      }
    }
    
    // 输出事件:
    // (注释) message += `事   件:${getEventTypeText(event.event)}\n`;

   // 空一行
    message += '\n';

    // 输出时间:
    message += `时   间:${formatTime(event.time)}\n`;

   // 空一行
    message += '\n';
    
    // 如果有附加消息,显示在备注中
    if (event.message && event.message.trim()) {
      message += `备   注:${event.message}`;
    }

    // 发送通知
    const success = await sendMessage(message, eventTypeDesc);
    if (success) {
      console.log(`事件通知已发送: ${event.event}`);
    } else {
      console.error(`事件通知发送失败: ${event.event}`);
    }
    return success;
    
  } catch (error) {
    console.error('发送事件通知时出错:', error);
    
    // 发送简化的错误通知
    const fallbackMessage = `${getEventTypeDesc(event.event) || ''}\n\n事   件:${event.event}\n时   间:${new Date().toLocaleString('zh-CN')}`;
    const fallbackTitle = 'Komari 通知';
    try {
      return await sendMessage(fallbackMessage, fallbackTitle);
    } catch (fallbackError) {
      console.error('备用通知也失败:', fallbackError);
      return false;
    }
  }
}

2.使用效果
微信截图_20260129171204.png

文章作者: Fan
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Fan Book
VPS
喜欢就支持一下吧