# JavaNginxLite **Repository Path**: terrybao/java-nginx-lite ## Basic Information - **Project Name**: JavaNginxLite - **Description**: 基于 Java21 + 虚拟线程 + 内置 HttpServer+Caffeine+GraalVM 实现 Nginx 单机全功能 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-17 - **Last Updated**: 2026-01-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, Nginx, Caffeine, graalvm ## README # Java Nginx Lite 基于 Java 21 + 虚拟线程 + 内置 HttpServer + Caffeine + GraalVM 实现 Nginx 单机全功能。 ## 项目简介 本项目旨在使用纯 Java 技术栈实现 Nginx 单机版的全部核心功能,在单机场景下达到与 Nginx 持平的性能表现,并在动态业务逻辑、缓存聚合等场景具备优势。 ## 核心技术栈 - **Java 21**:LTS 长期支持版本,提供虚拟线程能力 - **虚拟线程 (Virtual Thread)**:解决 Java 传统线程的并发瓶颈,对标 Nginx 的事件驱动模型 - **JDK 内置 HttpServer**:轻量无依赖、原生内置的 HTTP 服务器 - **Caffeine**:Java 本地缓存性能第一的组件 - **GraalVM**:原生编译打包,抹平 Java 的部署劣势 ## 功能特性 ### 基础核心功能 - 静态资源文件服务 - HTTP/1.1 完整协议支持 - 反向代理 & 正向代理 - 请求路由 & 域名/路径匹配 - 本地缓存 & 缓存策略 ### 高级核心功能 - 负载均衡(轮询、权重轮询、IP 哈希、最少连接) - 请求限流 & 并发控制 - 跨域处理(CORS) - 请求/响应头修改 - 访问日志 & 错误日志 - HTTPS/SSL 证书配置 ### 边缘扩展功能 - 防盗链 - gzip 压缩 - 自定义错误页 - 断点续传/大文件上传 ## 性能对标 在单机场景下(8核16G,CentOS 7): - 并发连接数:10w+ - 纯静态资源 QPS:7-8万 - 带缓存的动态请求 QPS:6-7万 - 反向代理请求 QPS:4-5万 - 响应时间:99% < 1ms - 内存占用:60-80M(GraalVM 打包后) ## 快速开始 ### 环境要求 - JDK 21 或更高版本 - Maven 3.8+ - GraalVM 21+(用于原生编译,可选) ### 编译运行 #### 传统 JVM 运行 ```bash mvn clean package java -jar target/java-nginx-lite-1.0.0-SNAPSHOT.jar [port] ``` #### GraalVM 原生编译 ```bash mvn -Pnative native:compile ./target/java-nginx-lite-1.0.0-SNAPSHOT [port] ``` ### 默认端口 默认监听端口为 8080,可通过命令行参数指定。 ## 项目结构 ``` java-nginx-lite/ ├── src/ │ ├── main/ │ │ ├── java/com/nginx/lite/ │ │ │ ├── NginxLiteApplication.java # 主程序入口 │ │ │ ├── server/ # 服务器核心 │ │ │ ├── handler/ # 请求处理器 │ │ │ ├── filter/ # 过滤器 │ │ │ ├── cache/ # 缓存实现 │ │ │ ├── proxy/ # 代理功能 │ │ │ ├── loadbalance/ # 负载均衡 │ │ │ ├── config/ # 配置管理 │ │ │ └── util/ # 工具类 │ │ └── resources/ │ │ ├── logback.xml # 日志配置 │ │ └── application.properties # 应用配置 │ └── test/ │ └── java/com/nginx/lite/ ├── pom.xml ├── README.md ├── todo.md └── 可行性报告.md ``` ## 开发指南 ### 代码风格 - 使用 Java 21 特性(虚拟线程、模式匹配等) - 遵循阿里巴巴 Java 开发规范 - 不添加任何注释(除非明确要求) ### 构建命令 ```bash # 编译 mvn clean compile # 运行测试 mvn test # 打包 mvn clean package # 原生编译 mvn -Pnative native:compile ``` ## 优势 & 劣势 ### 优势 1. **开发效率**:命令式编程,基于 Java 成熟生态,开发效率比 Nginx 高 5-10 倍 2. **扩展能力**:可无缝集成任何 Java 生态组件,扩展能力无限 3. **动态化能力**:支持动态配置热更新,无需重启服务 4. **缓存能力**:Caffeine 缓存命中率和性能远超 Nginx 原生缓存 5. **团队技术栈**:复用现有 Java 技术栈,降低团队成本 6. **一致性**:业务系统和代理层使用同一种语言,统一日志、监控、链路追踪 ### 劣势 1. 纯静态资源极致吞吐略低于 Nginx(10%-15%),但可通过优化补足 2. GraalVM 原生编译配置略复杂,但配置一次后可复用 ## 详细文档 更多技术细节和可行性分析请参考 [可行性报告.md](可行性报告.md) ## License MIT License