Skip to content

limingjun1092/ice-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧊 Ice HTTP 服务器

Version Node.js License Size

一个轻量级、高性能的静态文件 HTTP 服务器,基于 Node.js 构建。冰力十足,功能全面!

🐧 此Ice冰力十足!🧊

✨ 特性

  • 🚀 高性能:支持 Gzip 压缩,优化静态文件传输
  • 🔒 安全可靠:内置路径遍历攻击防护,黑名单机制
  • 📊 智能日志:结构化日志系统,支持访问日志追踪
  • 🎨 趣味彩蛋:命令行支持冰块图案,充满乐趣
  • ⚙️ 配置灵活:JSON 配置文件,支持跨平台路径
  • 🔄 后台运行:支持后台模式运行和优雅关闭

📦 安装

# 克隆项目
git clone https://github.com/limingjun1092/ice-server.git
cd ice-server

# 安装依赖
npm install

🚀 快速开始

# 启动服务器(默认配置)
node server.js # 或 npm start

# 开发模式
npm run dev

# 显示冰块彩蛋
node server.js -vv (PS:在-vv上加上更多的v可以找到彩蛋哦~)

# 显示企鹅彩蛋
npm run iceberg

🎯 使用示例

# 基本用法
node server.js

# 指定配置文件
node server.js -c ./custom.config.json

# 开发环境启动
node server.js -e development

# 后台运行
node server.js -BE

# 停止后台服务器
node server.js -s

# 查看版本号
node server.js -v

# 显示冰块彩蛋(越多v越多冰)
node server.js -vv
node server.js -vvv
node server.js -vvvv
node server.js -vvvvvvvvvv  # 显示企鹅!

# 查看帮助
node server.js -h

⚙️ 配置文件

默认配置文件 ice.config.json

{
  "server": {
    "port": 3000,
    "host": "0.0.0.0",
    "protocol": "http",
    "name": "Ice Server"
  },
  "paths": {
    "static": "./www",
    "logDir": "./logs",
    "baseDir": "."
  },
  "security": {
    "blacklist": [],
    "preventPathTraversal": true
  },
  "logger": {
    "level": "info",
    "console": true
  }
}

若是要安装为常驻服务器,请使用以下配置:

{
  "server": {
    "port": 3000,
    "host": "0.0.0.0",
    "protocol": "http",
    "name": "Ice Server"
  },
  "paths": {
    "static": "./www",
    "logDir": "./logs",
    "baseDir": ""
  },
  "security": {
    "blacklist": [],
    "preventPathTraversal": true
  },
  "logger": {
    "level": "info",
    "console": true
  }
}

🎯 不同配置示例和效果

示例1:空 baseDir(使用跨平台默认目录)

{
  "paths": {
    "baseDir": "",
    "static": "./www",
    "logDir": "./logs"
  }
}
  • Windows: C:\ice\www, C:\ice\logs
  • Linux: /home/用户名/ice/www, /home/用户名/ice/logs
  • macOS: /Users/用户名/ice/www, /Users/用户名/ice/logs

示例2:当前目录

{
  "paths": {
    "baseDir": ".",
    "static": "./www",
    "logDir": "./logs"
  }
}
  • 假设运行目录是 /projects/my-site
  • 结果: /projects/my-site/www, /projects/my-site/logs

示例3:指定具体目录

{
  "paths": {
    "baseDir": "/var/websites",
    "static": "./html",
    "logDir": "./logs"
  }
}
  • 结果: /var/websites/html, /var/websites/logs

示例4:相对路径(相对于配置文件)

{
  "paths": {
    "baseDir": "../sites",
    "static": "./public",
    "logDir": "./logs"
  }
}
  • 假设配置文件在 /configs/ice.json
  • 结果: /configs/sites/public, /configs/sites/logs

示例5:绝对路径的 static 和 logDir

{
  "paths": {
    "baseDir": "/some/dir",  // 这个会被忽略,因为下面的是绝对路径
    "static": "/var/www/html",
    "logDir": "/var/log/ice"
  }
}
  • 结果: /var/www/html, /var/log/ice(完全使用指定路径)

📁 项目结构

ice-server/
├── lib/                    # 核心模块
│   ├── config/            # 配置管理
│   ├── server/            # 服务器核心
│   ├── logger/            # 日志系统
│   ├── cli/               # 命令行工具
│   └── utils/             # 工具函数
├── www/                   # Web文件放置点
├── logs/                  # 日志文件夹
├── server.js              # 主入口文件
├── ice.config.json        # 配置文件
├── package.json           # 项目配置
└── README.md              # 说明文档

🔧 API 端点

  • GET / - 静态文件服务
  • GET /health - 健康检查
  • GET /ready - 就绪检查
  • GET /metrics - 性能指标

📈 性能特性

  • 压缩支持:自动 Gzip 压缩文本文件
  • 缓存控制:生产环境自动启用缓存
  • 并发处理:Node.js 事件驱动模型
  • 安全头部:自动设置安全相关 HTTP 头

🐧 彩蛋系统

输入不同数量的 -v 参数,会显示不同数量的冰块:

node server.js -v      # 版本号
node server.js -vv     # 🧊
node server.js -vvv    # 🧊🧊
node server.js -vvvvvvvvvvv   # 特殊企鹅图案!

🐛 问题反馈

如果遇到问题,请:

  1. 检查日志文件 logs/error.log
  2. 确认配置文件格式正确
  3. 检查端口是否被占用

📄 许可证

MIT License - 详见 LICENSE 文件

🤝 贡献

欢迎提交 Issue 和 Pull Request!

💝 鸣谢

感谢所有让这个项目变得更有趣的企鹅和冰块!🐧🧊

About

一个普普通通的http服务器

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors