# nodejs-proxy **Repository Path**: hyjiacan/nodejs-proxy ## Basic Information - **Project Name**: nodejs-proxy - **Description**: 局域网内代理外部的 NodeJS 相关二进制文件,解决离线环境无法下载 nvm、Electron、ChromeDriver 等工具的问题 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-16 - **Last Updated**: 2025-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Node 工具代理配置完整说明文档(含部署章节) 本文档详细介绍如何配置和部署 Node 工具代理服务,以加速各类 Node 相关工具的依赖下载。 ## 一、代理路径与目标镜像映射表 以下是完整的代理路径与 npmmirror 镜像源的对应关系,所有路径均经过实际访问验证(有效资源路径): | 代理路径 | 目标镜像地址 | 用途说明 | | ------------------------------- | --------------------------------------------------- | ----------------------------------------------------- | | `/proxy/npm/` | `https://registry.npmmirror.com/` | npm 包 registry 镜像(用于 npm/yarn/pnpm 等包管理器) | | `/proxy/node_mirror/` | `https://npmmirror.com/mirrors/node/` | Node.js 安装包镜像(用于 nvm 等版本管理工具) | | `/proxy/node_binary/` | `https://registry.npmmirror.com/-/binary/node/` | Node.js 二进制文件镜像(用于 n 等版本管理工具) | | `/proxy/electron_mirror/` | `https://npmmirror.com/mirrors/electron/` | Electron 框架二进制文件镜像 | | `/proxy/chromedriver_mirror/` | `https://npmmirror.com/mirrors/chromedriver/` | ChromeDriver 浏览器驱动镜像 | | `/proxy/geckodriver_mirror/` | `https://npmmirror.com/mirrors/geckodriver/` | GeckoDriver(Firefox 驱动)镜像 | | `/proxy/selenium_mirror/` | `https://npmmirror.com/mirrors/selenium/` | Selenium 自动化测试工具镜像 | | `/proxy/puppeteer_mirror/` | `https://npmmirror.com/mirrors/puppeteer/` | Puppeteer 依赖(Chromium)镜像 | | `/proxy/node_gyp_mirror/` | `https://registry.npmmirror.com/-/binary/node-gyp/` | node-gyp 原生模块编译工具镜像 | | `/proxy/ffmpeg_mirror/` | `https://cdn.npmmirror.com/binaries/ffmpeg/` | FFmpeg 音视频处理工具镜像 | | `/proxy/ffprobe_mirror/` | `https://cdn.npmmirror.com/binaries/ffprobe/` | FFprobe 媒体分析工具镜像 | | `/proxy/edgedriver_mirror/` | `https://npmmirror.com/mirrors/edgedriver/` | EdgeDriver(Edge 浏览器驱动)镜像 | | `/proxy/operadriver_mirror/` | `https://npmmirror.com/mirrors/operadriver/` | OperaDriver(Opera 浏览器驱动)镜像 | | `/proxy/iedriverserver_mirror/` | `https://npmmirror.com/mirrors/iedriverserver/` | IEDriverServer(IE 浏览器驱动)镜像 | | `/proxy/volta_mirror/` | `https://npmmirror.com/mirrors/volta/` | Volta 版本管理工具镜像 | ## 二、包管理器配置(npm/yarn/pnpm) 包管理器主要用于下载 Node 依赖包,核心是将 registry 指向 `/proxy/npm/` 代理路径。 ### 2.1 npm 配置 ```bash # 设置全局 registry npm config set registry http://localhost:4757/proxy/npm/ # 验证配置 npm config get registry # 输出应包含上述代理路径 ``` ### 2.2 yarn 配置 ```bash # 设置 registry yarn config set registry http://localhost:4757/proxy/npm/ # 验证 yarn config get registry ``` ### 2.3 pnpm 配置 ```bash # 设置 registry pnpm config set registry http://localhost:4757/proxy/npm/ # 验证 pnpm config get registry ``` ## 三、Node 版本管理工具配置 用于管理多版本 Node.js 的工具(如 nvm、n、Volta),需配置对应镜像路径以加速安装。 ### 3.1 nvm(Node Version Manager) nvm 下载 Node 安装包时,需指向 `/proxy/node_mirror/`: ```bash # 临时生效(单次安装) NVM_NODEJS_ORG_MIRROR=http://localhost:4757/proxy/node_mirror/ nvm install <版本号> # 永久生效(添加到 ~/.bashrc 或 ~/.zshrc) export NVM_NODEJS_ORG_MIRROR=http://localhost:4757/proxy/node_mirror/ source ~/.bashrc # 生效配置 ``` ### 3.2 n(轻量 Node 版本管理工具) n 工具依赖 `/proxy/node_binary/` 路径: ```bash # 临时安装 N_NODE_MIRROR=http://localhost:4757/proxy/node_binary/ n install <版本号> # 永久生效(添加到环境变量配置文件) export N_NODE_MIRROR=http://localhost:4757/proxy/node_binary/ ``` ### 3.3 Volta Volta 安装和切换版本时,需指向 `/proxy/volta_mirror/`: ```bash # 安装 Volta 时指定镜像(Linux/macOS) curl https://get.volta.sh | VOLTA_DOWNLOAD_ROOT=http://localhost:4757/proxy/volta_mirror/ bash # 验证镜像是否生效 volta install node@18 # 观察下载地址是否包含代理路径 ``` ## 四、原生模块编译工具配置(node-gyp) node-gyp 用于编译 C++ 编写的 Node 原生模块,需配置其二进制镜像: ```bash # 方式1:通过环境变量临时生效 export node_gyp_mirror=http://localhost:4757/proxy/node_gyp_mirror/ npm install <需要编译的模块> # 如 node-sass、sqlite3 等 # 方式2:项目级配置(在项目根目录 .npmrc 中添加) node_gyp_mirror=http://localhost:4757/proxy/node_gyp_mirror/ ``` ## 五、浏览器驱动与自动化工具配置 自动化测试工具(如 Selenium)依赖的浏览器驱动(Chromedriver、Edgedriver 等),需单独配置镜像。 ### 5.1 常见浏览器驱动配置 | 驱动工具 | 环境变量名 | 代理路径配置 | | -------------- | --------------------- | ---------------------------------------------------- | | Chromedriver | CHROMEDRIVER_CDNURL | | | GeckoDriver | GECKODRIVER_CDNURL | | | EdgeDriver | EDGEDRIVER_CDNURL | | | OperaDriver | OPERADRIVER_CDNURL | | | IEDriverServer | IEDRIVERSERVER_CDNURL | | **配置示例**(以 Chromedriver 为例): ```bash # 临时安装 chromedriver 包 CHROMEDRIVER_CDNURL=http://localhost:4757/proxy/chromedriver_mirror/ npm install chromedriver # 永久生效(添加到环境变量) export CHROMEDRIVER_CDNURL=http://localhost:4757/proxy/chromedriver_mirror/ ``` ### 5.2 Selenium Selenium 工具包下载需指向 `/proxy/selenium_mirror/`: ```bash # 临时安装 SELENIUM_CDNURL=http://localhost:4757/proxy/selenium_mirror/ npm install selenium-webdriver # 永久生效 export SELENIUM_CDNURL=http://localhost:4757/proxy/selenium_mirror/ ``` ## 六、前端框架与工具配置 部分框架(如 Electron)和工具(如 Puppeteer)需下载额外二进制资源,需单独配置。 ### 6.1 Electron Electron 框架二进制文件通过 `/proxy/electron_mirror/` 获取: ```bash # 临时安装 ELECTRON_MIRROR=http://localhost:4757/proxy/electron_mirror/ npm install electron # 永久生效 export ELECTRON_MIRROR=http://localhost:4757/proxy/electron_mirror/ ``` ### 6.2 Puppeteer Puppeteer 依赖的 Chromium 浏览器需指向 `/proxy/puppeteer_mirror/`: ```bash # 临时安装 PUPPETEER_DOWNLOAD_BASE_URL=http://localhost:4757/proxy/puppeteer_mirror/ npm install puppeteer # 永久生效 export PUPPETEER_DOWNLOAD_BASE_URL=http://localhost:4757/proxy/puppeteer_mirror/ ``` ## 七、音视频工具配置(FFmpeg/FFprobe) FFmpeg 和 FFprobe 用于音视频处理,需配置对应代理路径: ```bash # FFmpeg 配置 export FFMPEG_BINARIES_URL=http://localhost:4757/proxy/ffmpeg_mirror/ # FFprobe 配置 export FFPROBE_BINARIES_URL=http://localhost:4757/proxy/ffprobe_mirror/ # 安装依赖包时生效(以 ffmpeg-static 为例) npm install ffmpeg-static # 会自动从上述代理路径下载 ``` ## 八、项目级配置(推荐) 为避免全局配置影响其他项目,可在项目根目录创建 `.npmrc` 文件,集中管理代理: ```ini # .npmrc 示例 registry=http://localhost:4757/proxy/npm/ node_gyp_mirror=http://localhost:4757/proxy/node_gyp_mirror/ electron_mirror=http://localhost:4757/proxy/electron_mirror/ puppeteer_download_base_url=http://localhost:4757/proxy/puppeteer_mirror/ chromedriver_cdnurl=http://localhost:4757/proxy/chromedriver_mirror/ ffmpeg_binaries_url=http://localhost:4757/proxy/ffmpeg_mirror/ ``` ## 九、部署章节 ### 1. 服务部署说明 本代理服务基于 Python 实现,默认监听 **4757 端口**,支持以下部署方式: #### 1.1 环境准备 ```bash # 创建Python虚拟环境 python -m venv venv # 激活虚拟环境 # Windows: venv\Scripts\activate.bat # Linux/macOS: source venv/bin/activate # 安装依赖 pip install -r requirements.txt ``` #### 1.2 直接运行(开发环境) ```bash python main.py ``` ### 2. 配置文件详解 ```yaml # 代理路径映射配置 proxy_mirrors: # 代理路径: 目标镜像URL "/proxy/npm/": "https://registry.npmmirror.com/" "/proxy/node_mirror/": "https://npmmirror.com/mirrors/node/" "/proxy/node_binary/": "https://registry.npmmirror.com/-/binary/node/" "/proxy/electron_mirror/": "https://npmmirror.com/mirrors/electron/" "/proxy/chromedriver_mirror/": "https://npmmirror.com/mirrors/chromedriver/" "/proxy/geckodriver_mirror/": "https://npmmirror.com/mirrors/geckodriver/" "/proxy/selenium_mirror/": "https://npmmirror.com/mirrors/selenium/" "/proxy/puppeteer_mirror/": "https://npmmirror.com/mirrors/puppeteer/" "/proxy/node_gyp_mirror/": "https://registry.npmmirror.com/-/binary/node-gyp/" "/proxy/ffmpeg_mirror/": "https://cdn.npmmirror.com/binaries/ffmpeg/" "/proxy/ffprobe_mirror/": "https://cdn.npmmirror.com/binaries/ffprobe/" "/proxy/edgedriver_mirror/": "https://npmmirror.com/mirrors/edgedriver/" "/proxy/operadriver_mirror/": "https://npmmirror.com/mirrors/operadriver/" "/proxy/iedriverserver_mirror/": "https://npmmirror.com/mirrors/iedriverserver/" "/proxy/volta_mirror/": "https://npmmirror.com/mirrors/volta/" # 服务器配置 server: # 监听所有网络接口 host: "0.0.0.0" port: 4757 timeouts: # 连接超时(秒) connect: 30 # 总读取超时(秒) read: 300 # 无数据超时(秒) no_data: 60 chunk_size: 8192 # 最大并发连接数 max_connections: 100 user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" # 日志配置 log: # 日志目录 directory: "./logs" # 日志级别: DEBUG/INFO/WARNING/ERROR/CRITICAL level: "INFO" # 保留天数 retention_days: 7 # 缓存配置 cache: # 是否启用缓存 enabled: true # 缓存根目录 directory: "./cache" ``` ### 3. 客户端配置注意事项 所有工具配置中的 `http://localhost:4757` 需替换为实际部署地址: - **本地部署**:`http://localhost:4757` - **远程服务器部署**:`http://服务器IP:4757` 或 `http://域名:4757` 例如,npm 配置示例: ```bash npm config set registry http://localhost:4757/proxy/npm/ ``` ## 十、注意事项 1. **代理服务地址替换**:所有配置中的 `http://localhost:4757` 需替换为实际代理服务地址(如公司内部代理 `http://proxy.example.com:8080`)。 2. **路径有效性验证**:若配置后下载失败,可通过浏览器访问 `目标镜像地址`(如 `https://npmmirror.com/mirrors/electron/`)确认资源是否存在,部分工具可能因版本更新调整路径。 3. **环境变量优先级**:临时环境变量 > 项目级配置(.npmrc)> 全局配置,可根据需求灵活选择。 4. **工具版本兼容**:部分旧工具可能不支持代理配置,建议升级到最新稳定版(如 npm ≥ 6.x、yarn ≥ 1.22.x)。