# easy-http-proxy-server **Repository Path**: awol2010ex/easy-http-proxy-server ## Basic Information - **Project Name**: easy-http-proxy-server - **Description**: 一个轻量级的HTTP代理服务器项目,支持灵活配置和高效转发,适用于开发测试和网络请求管理。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-09-29 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Easy HTTP Proxy Server 一个基于 Rust 的轻量级 HTTP/HTTPS 代理服务器,支持连接池复用,性能优异。 ## 功能特性 - **HTTP/HTTPS 代理支持**:同时支持 HTTP 转发和 HTTPS CONNECT 隧道 - **连接池复用**:TCP 连接复用机制,显著提升性能 - **异步高性能**:基于 Tokio 异步运行时,支持高并发 - **网络接口自动识别**:启动时自动检测并显示所有可用的网络接口 IP - **命令行工具**:提供便捷的 CLI 界面,支持自定义主机、端口和日志级别 - **库 + 二进制**:既可作为独立程序运行,也可作为 Rust 库集成 - **Apache 2.0 开源协议** ## 安装 ### 从源码编译 ```bash git clone https://gitee.com/awol2010ex/easy-http-proxy-server.git cd easy-http-proxy-server cargo build --release ``` 编译后的二进制文件位于 `target/release/easy-http-proxy-server` ### 作为库使用 在 `Cargo.toml` 中添加依赖: ```toml [dependencies] easy-http-proxy-server = { git = "https://gitee.com/awol2010ex/easy-http-proxy-server.git" } ``` ## 快速开始 ### 命令行使用 ```bash # 使用默认配置启动(监听 0.0.0.0:3128) cargo run --release # 指定主机和端口 cargo run --release -- --host 127.0.0.1 --port 8080 # 启用详细日志 cargo run --release -- --verbose # 查看帮助 cargo run --release -- --help ``` ### 库使用示例 ```rust use easy_http_proxy_server::{ProxyServer, ProxyConfig}; use std::net::SocketAddr; #[tokio::main] async fn main() -> Result<(), Box> { let addr: SocketAddr = "127.0.0.1:3128".parse()?; let config = ProxyConfig::new(addr, true); let server = ProxyServer::new(config); println!("代理服务器启动于 {}", addr); server.run().await?; Ok(()) } ``` ## 配置选项 ### 命令行参数 ``` USAGE: easy-http-proxy-server [OPTIONS] OPTIONS: --host 绑定的主机地址 [默认: 0.0.0.0] -p, --port 绑定的端口 [默认: 3128] -v, --verbose 启用详细日志输出 -h, --help 显示帮助信息 ``` ### 环境变量 - `RUST_LOG`: 设置日志级别,例如 `RUST_LOG=debug cargo run` ## 项目结构 ``` src/ ├── main.rs # 二进制入口,CLI 参数解析和网络接口检测 ├── lib.rs # 库入口,模块导出 ├── server.rs # 核心代理服务器实现 ├── pool.rs # TCP 连接池实现 ├── connection.rs # 连接工具函数 └── error.rs # 错误类型定义 ``` ## API 文档 ### ProxyServer 代理服务器主结构体,负责处理传入的连接。 ```rust // 创建服务器实例 let server = ProxyServer::new(config); // 使用自定义连接池 let server = ProxyServer::with_pool(config, pool); // 启动服务器 server.run().await?; // 获取统计信息 let connections = server.total_connections(); let requests = server.total_requests(); ``` ### ProxyConfig 代理服务器配置结构体。 ```rust // 创建配置 let config = ProxyConfig::new(addr, verbose); // 快速创建本地配置 let config = ProxyConfig::localhost(port, verbose); ``` ### ConnectionPool 连接池用于复用 TCP 连接。 ```rust // 创建默认连接池 let pool = ConnectionPool::new(); // 创建自定义超时连接池 let pool = ConnectionPool::with_idle_timeout(Duration::from_secs(60)); // 获取或创建连接 let stream = pool.get_or_create(target_addr).await?; // 归还连接到池 pool.put(target_addr.to_string(), stream).await; ``` ## 开发历史 - **初始实现** (`e7dc3f6`, `6ba14de`): 基础 HTTP/HTTPS 代理功能 - **库封装** (`2c8db1c`): 重构为库 + 二进制双模式 - **文档更新** (`778101d`): 完善项目文档 - **项目改名** (`f449529`): 更名为 easy-http-proxy-server - **网络接口优化** (`15873bd`, `73ae4a0`): - 默认监听地址改为 0.0.0.0(全局可访问) - 改进网络接口识别逻辑,支持多语言系统 - 启动时显示所有可用 IP 和代理配置命令 ## 系统要求 - Rust 1.75+ (2024 Edition) - Windows/Linux/macOS ## 许可证 Apache License 2.0 - 详见 [LICENSE](LICENSE) 文件