
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Reproxy 是一款轻量级边缘HTTP(s)服务器/反向代理,支持多种提供者(Docker、静态规则、文件),通过灵活的路由规则将请求代理到目标地址。它可作为单个二进制文件或Docker容器部署,适用于边缘计算场景下的请求转发、SSL终止、静态文件服务等需求。
Reproxy 至少需要配置一个提供者,其余参数为可选且具有合理默认值。支持HTTP与HTTPS(静态证书或ACME自动证书),可通过正则表达式定义路由规则,并提供健康检查、日志记录等功能。
*)和URL正则表达式匹配,支持分组捕获与替换/ping(服务存活)和/health(目标服务健康状态)端点从https://github.com/umputun/reproxy/releases%E4%B8%8B%E8%BD%BD%E5%AF%B9%E5%BA%94%E5%B9%B3%E5%8F%B0%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%EF%BC%8C%E7%9B%B4%E6%8E%A5%E6%89%A7%E8%A1%8C%E5%8D%B3%E5%8F%AF%E3%80%82
Docker镜像可通过Docker Hub(umputun/reproxy)或GitHub容器 registry(ghcr.io/umputun/reproxy)获取。标签说明:
:vX.Y.Z:稳定版本(latest为最新稳定版别名):master:开发分支版本Static提供者示例(Docker运行)
bashdocker run -d --name reproxy -p 8080:8080 umputun/reproxy \ --static.enabled \ --static.rule="example.com/api/(.*),https://api.example.com/$1" \ --static.rule="*,/static/(.*),http://assets.example.com/$1,http://assets.example.com/ping"
File提供者示例
创建配置文件config.yml:
yamldefault: # 匹配所有服务器(相当于通配符`*`) - {route: "^/api/svc1/(.*)", dest: "http://127.0.0.1:8080/blah1/$1"} - {route: "/api/svc3/xyz", dest: "http://127.0.0.3:8080/blah3/xyz", ping: "http://127.0.0.3:8080/ping"} srv.example.com: # 仅匹配服务器`srv.example.com` - {route: "^/api/svc2/(.*)", dest: "http://127.0.0.2:8080/blah2/$1/abc"}
运行Docker容器:
bashdocker run -d --name reproxy -p 8080:8080 -v $(pwd)/config.yml:/config.yml umputun/reproxy \ --file.enabled \ --file.name=/config.yml
Docker提供者示例
启动Docker容器并配置标签:
bash# 目标服务容器(添加reproxy标签) docker run -d --name api-service \ --label "reproxy.server=api.example.com" \ --label "reproxy.route=^/v1/(.*)" \ --label "reproxy.dest=/api/v1/$1" \ --label "reproxy.ping=/health" \ my-api-image # Reproxy容器(连接Docker守护进程) docker run -d --name reproxy -p 80:8080 -v /var/run/docker.sock:/var/run/docker.sock umputun/reproxy \ --docker.enabled \ --docker.network=my-network \ --docker.exclude=reproxy # 排除自身容器
Reproxy支持同时配置多个提供者,动态获取路由规则。
Static提供者
通过命令行或环境变量直接定义路由规则,格式为server,sourceurl,destination,[ping-url](逗号分隔,共3或4个元素):
server:服务器名(FQDN或*匹配所有)sourceurl:请求URL正则表达式(如^/api/(.*))destination:目标URL(可引用正则分组,如http://dest/$1)ping-url(可选):健康检查URL示例规则:
*,^/api/(.*),https://api.example.com/$1:所有服务器的/api/*请求代理到https://api.example.com/*example.com,/foo,https://dest.example.com/bar,https://dest.example.com/ping:example.com/foo请求代理到https://dest.example.com/bar,使用https://dest.example.com/ping健康检查File提供者
通过YAML配置文件定义规则,支持动态更新(文件变更自动生效)。配置文件格式:
yaml<server>: # 服务器名(FQDN或`default`对应`*`) - route: <sourceurl正则> dest: <目标URL> ping: <可选健康检查URL>
启用命令:--file.enabled --file.name=<配置文件路径>
Docker提供者
自动发现Docker容器并生成路由规则,通过容器标签自定义路由:
reproxy.server:匹配的服务器名reproxy.route:请求URL正则表达式reproxy.dest:目标路径(拼接容器IP:端口)reproxy.ping:健康检查路径reproxy.enabled=false:排除该容器限制容器范围:
--docker.exclude=<容器名>:排除指定容器(可多次使用)--docker.network=<网络名>:仅包含指定网络的容器通过--ssl.type指定SSL类型:
none(默认):禁用HTTPSstatic:使用静态证书,需指定--ssl.cert(证书路径)和--ssl.key(私钥路径)auto:ACME自动证书(Let's Encrypt),需指定--ssl.acme-email(管理员***)和--ssl.acme-location(证书存储目录)示例(ACME):
bashdocker run -d --name reproxy -p 80:80 -p 443:443 -v ./acme:/acme umputun/reproxy \ --ssl.type=auto \ --ssl.acme-email=admin@example.com \ --ssl.acme-location=/acme \ --ssl.fqdn=example.com \ --ssl.fqdn=www.example.com \ --static.enabled \ --static.rule="example.com,/,http://webserver:80"
启用后处理非代理请求,作为静态Web服务器:
--assets.location=<静态文件目录>:启用资产服务器并指定文件路径--assets.root=<URL根路径>:静态文件访问根URL(默认/)示例:
bashdocker run -d --name reproxy -p 8080:8080 -v ./static:/static umputun/reproxy \ --assets.location=/static \ --assets.root=/public
此时http://localhost:8080/public/file.txt会访问/static/file.txt
启用访问日志:--logger.enabled,日志格式为Apache组合日志格式,自动轮转。可配置:
--logger.file=<日志文件路径>(默认access.log)--logger.max-size=<最大大小MB>(默认100)--logger.max-backups=<保留文件数>(默认10)| 选项 | 说明 | 默认值 | 环境变量 |
|---|---|---|---|
--listen | 监听地址(host:port) | 127.0.0.1:8080 | LISTEN |
--timeout | 代理超时 | 5s | TIMEOUT |
--max | 最大请求大小(字节) | 64000 | MAX_SIZE |
--gzip | 启用Gzip压缩 | 禁用 | GZIP |
--header | 添加自定义请求头(可多次使用) | - | HEADER |
--no-signature | 禁用Reproxy标识头 | 启用 | NO_SIGNATURE |
--dbg | 调试模式 | 禁用 | DEBUG |
Reproxy提供两个健康检查端点:
/ping:返回pong,表示服务运行中/health:返回200 OK(所有目标服务健康)或417 Expectation Failed(存在不健康服务),响应体为JSON格式的健康状态详情项目处于活跃开发中,v1版本前可能存在不兼容变更。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。






来自真实用户的反馈,见证轩辕镜像的优质服务