服务器端

JoyProxy 服务器端

适用于 Linux 与 Windows 的高性能 HTTP / SOCKS5 代理网关。五种启动模式,可选外部验证与流量 API。

预编译安装包

从 GitHub 下载 Linux 与 Windows 预编译包,无需编译。

Linux

从 GitHub Releases 获取 Linux amd64 二进制(v2.3)及可选 CentOS 7 压缩包。

Windows

joyproxy-gui.exe 为图形界面版,joyproxy.exe 为命令行版。

桌面代理管理器

joyproxy-gui.exe 提供可视化界面,可设置监听端口、验证模式、启停控制与实时日志,无需命令行。

⚙️

基础与验证设置

在同一界面设置监听端口、本机 IP、代理类型及开放/白名单/密码模式。

▶️

一键执行控制

启动、停止、保存设置,执行状态一目了然。

📋

内置日志查看

无需另外开启终端即可实时查看代理日志。

命令行参数

执行 ./joyproxy sps -h 查看所有参数。常用选项:

参数必填说明
-S否上游中继类型:http 或 socks5(默认 http)
-p是监听端口,如 :8080 或 :5001-5999
-g建议本机公网 IP;调用验证 API 时作为 local_addr
-parent否验证 API 未返回 upstream 时的默认上级代理
--auth-url否外部验证 API URL(可选)
--auth-nouser否客户端无需密码;由 API 按连接决定
--auth-cache否验证成功缓存 TTL(秒)
--auth-fail-cache否验证失败缓存 TTL(秒)
--traffic-url否外部流量上报 API URL(可选)
--daemon否后台运行(shell 立即返回)
--forever否配合 --daemon:崩溃后自动重启
--no-detach否配合 --daemon:不脱离终端(systemd 使用)
--verbose否完整日志
--quiet否仅错误日志
--max-conns-rate否全局每秒最大新建连接数(0 不限制)
--sniff-domain否对 HTTP CONNECT 嗅探 TLS SNI
./joyproxy sps -h
./joyproxy sps -S http -p ":8080" -g "YOUR_PUBLIC_IP"

服务器能力

适用于您基础设施的生产级代理网关

🔀

双协议

可在可配置的单一端口或端口范围上提供 HTTP 与 SOCKS5。

🔐

灵活验证

开放代理、白名单 API、用户名/密码或完整外部验证 API。

📊

流量 API

连接结束时可选异步流量上报。

⚡

速率限制

按用户的连接限制、带宽上限与全局连接速率限制。

🔄

守护程序模式

后台运行并支持崩溃后自动重启,适合生产部署。

🔍

TLS SNI 嗅探

可选在 HTTP CONNECT 上嗅探网域。

五种授权模式

选择适合您部署的模式

1. 开放代理(无密码)

无 --auth-url。任何能连到该端口的用户均可无凭证使用代理。

./joyproxy sps -S http -p ":8080" -g "YOUR_PUBLIC_IP"

2. 白名单授权

使用 --auth-nouser + --auth-url。客户端无需密码;您的 API 按连接决定允许或拒绝。

./joyproxy sps -S http -p ":8080" -g "YOUR_PUBLIC_IP" \
  --auth-nouser --auth-url "https://your-api.example.com/auth"

3. 用户名 / 密码

不要使用 --auth-nouser。客户端必须发送 Proxy-Authorization 或 SOCKS5 凭证。缺少时返回 407。

./joyproxy sps -S http -p ":8080" -g "YOUR_PUBLIC_IP"

4. 外部验证 API

可选 --auth-url 对每条连接向您的端点发起 HTTP GET。

./joyproxy sps -S http -p ":8080" -g "YOUR_PUBLIC_IP" \
  --auth-url "https://your-api.example.com/auth"

5. 外部流量 API

可选 --traffic-url 在连接结束时异步回报。您的 API 应返回 204 No Content。

./joyproxy sps -S http -p ":8080" -g "YOUR_PUBLIC_IP" \
  --auth-nouser --traffic-url "https://your-api.example.com/traffic"

外部验证 API 参考

设置 --auth-url 后,每条连接会附带以下查询参数:

参数说明
user客户端用户名(--auth-nouser 时可为空)
pass客户端密码
client_addr客户端地址 IP:端口
local_addr代理监听地址 IP:端口
target目标:HTTP URL 或 host:port
servicehttp 或 socks
sps固定为 1

您的 API 应返回 200 或 204,并附 upstream 标头以放行;返回 upstream: ERR 或非 200/204 则拒绝(客户端收到 503,或通过 X-Joyproxy-Reject-Status / X-Joyproxy-Deny 返回 407/429)。

响应标头说明
upstream本连接使用的上级代理 URL
outgoing出站源 IP 绑定提示
userconns / ipconns最大并发连接数(按用户)
userrate / iprate单连接带宽字节/秒(按用户)
userqps / ipqps每秒最大新建连接数(按用户)

外部流量 API 参考

设置 --traffic-url 后,每条连接结束时会异步发起 HTTP GET。您的 API 应返回 204 No Content。

参数说明
act流量
bytes传输字节总数(上行 + 下行)
client_addr客户端 IP:端口
server_addr代理服务地址 IP:端口
target_addr目标主机或 IP:端口
username代理认证用户名(如有)
upstream实际使用的上级 URL(如有)
out_local_addr出站 TCP 本地地址
out_remote_addr出站 TCP 远程地址
idhttp 或 socks
sniff_domainTLS SNI(仅启用 --sniff-domain 时)

守护程序与 systemd

生产环境使用 --daemon --forever。使用 systemd 时请加 --no-detach,避免主程序立即退出。

./joyproxy sps -S http -p ":5001-5999" -g "YOUR_PUBLIC_IP" \
  --auth-nouser --daemon --forever

# systemd unit: add --no-detach

请求流程

客户端连接至 joyproxy-server;服务器在转发流量前可选调用您的验证 API。

版本历史

近期版本说明,完整记录见 GitHub。

v2.3(当前推荐)

  • SOCKS5 UDP 经 socks5:// 上级转发:UDP 与 TCP 一样走鉴权返回的上级线路。
  • 修复上级 UDP ASSOCIATE 回 0.0.0.0/回环时中继地址取错(改用控制 TCP 对端地址)。
  • 包含 v2.2:UDP ASSOCIATE 回报地址优先 -g 公网 IP,外网客户端可访问中继端口。

鉴权 API 对 SOCKS/UDP 须返回 socks5://(不能仅 http://)。

v2.2

  • UDP ASSOCIATE 回报地址优先 -g 公网 IP,不再用网卡内网 IP。

v2.1

  • SOCKS5 UDP 可经 socks5:// 上级转发,与 HTTP/SOCKS5 TCP 共用监听端口。

部署到您的服务器

下载安装包、设置启动模式,即可开始接受连接。

下载安装包