一个轻量级、高性能的静态文件 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
}
}{
"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
{
"paths": {
"baseDir": ".",
"static": "./www",
"logDir": "./logs"
}
}- 假设运行目录是
/projects/my-site - 结果:
/projects/my-site/www,/projects/my-site/logs
{
"paths": {
"baseDir": "/var/websites",
"static": "./html",
"logDir": "./logs"
}
}- 结果:
/var/websites/html,/var/websites/logs
{
"paths": {
"baseDir": "../sites",
"static": "./public",
"logDir": "./logs"
}
}- 假设配置文件在
/configs/ice.json - 结果:
/configs/sites/public,/configs/sites/logs
{
"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 # 说明文档
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 # 特殊企鹅图案!如果遇到问题,请:
- 检查日志文件
logs/error.log - 确认配置文件格式正确
- 检查端口是否被占用
MIT License - 详见 LICENSE 文件
欢迎提交 Issue 和 Pull Request!
感谢所有让这个项目变得更有趣的企鹅和冰块!🐧🧊