https://framewiki.com/wiki-proxy
一句话说明
Wiki-Proxy 是基于 Netty 的开源代理服务,面向开发与内网转发场景,支持 HTTP/HTTPS、SOCKS5 等协议。本页承接特性、调优与部署说明;仅供学习与合法用途。
| 项 | 说明 |
|---|---|
| 适合谁 | 需要自建轻量代理 / 内网转发、可自行管理证书与网络暴露面的团队 |
| 运行时 | JDK17+ |
| 协议 | MIT |
| 边界 | 开源组件 ≠ 托管代理服务;示例密钥必须替换后才能用于生产 |
介绍
Wiki-Proxy 基于 Netty 构建,提供 HTTP/HTTPS、SOCKS5 等多种代理协议支持,并覆盖请求转发、负载相关能力与基础流量管控等常见需求。
项目理念
- 开箱即用:简单配置即可启动代理服务
- 轻量高效:基于 Netty 异步架构
- 功能完善:多协议、认证与访问控制
- 易于扩展:模块化设计,便于自定义中间件
核心特性
代理协议支持
- HTTP/HTTPS 代理:支持标准 HTTP CONNECT 方法
- SOCKS5 代理:完整的 SOCKS5 协议实现
- 透明代理:支持透明代理模式
- 协议转换:支持不同协议间的转换代理
性能与稳定性
- 异步架构:基于 Netty 事件驱动模型
- 连接池管理:智能连接复用与管理
- 内存优化:零拷贝技术与内存池管理
- 故障恢复:自动重连与故障转移
安全与认证
- 用户认证:支持用户名密码认证
- IP 白名单:基于 IP 的访问控制
- HTTPS 支持:SSL/TLS 加密传输
- 请求过滤:可配置的请求过滤规则
性能调优
JVM 参数优化
bash
java -Xms2g -Xmx4g \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions \
-XX:+UseZGC \
-jar wiki-proxy.jarNetty 调优
yaml
wiki:
proxy:
netty:
# I/O 线程数
boss-threads: 1
worker-threads: 16
# 缓冲区大小
receive-buffer-size: 65536
send-buffer-size: 65536
# 连接选项
so-backlog: 1024
so-keepalive: true
tcp-nodelay: true部署指南
使用 Jar 包部署
1、环境准备
- 首先确保已安装 Java JDK(JRE) 17+ 运行环境;
- 下载最新的 release 包:wiki-proxy-server.zip、wiki-proxy-client.zip,最新版本为 v1.0.0,见发行版页面;
- 或者自行下载源码,然后编译成 jar 包,编译命令:
mvn clean install -Dmaven.test.skip=true,也可在 IDEA 中打开项目编译,完成后在 target 目录下找到 jar 包;

2、部署服务端
- 需要在服务器上新建目录:
/usr/web/wiki-proxy/server/; - 程序日志默认输出到
/opt/log/wiki-proxy-server/,若非 root 账号需要授权:chown -R wiki:wiki /opt/log/;
bash
chown -R wiki:wiki /opt/log/- 将 wiki-proxy-server.zip 解压或自行打包的 Jar 包上传至服务器部署目录;
- 配置文件重点修改如下配置:
yaml
spring:
application:
name: wiki-proxy-server
proxy:
server:
# 服务端(TCP)端口
service-port: 10010
# 暴露端口 可以为多个
port:
- 443
# 证书存放路径(请改为本机真实路径)
ssl-key-store-path: "/etc/wiki-proxy/wiki-proxy.jks"
# 证书密码(请替换为自有强密码)
ssl-key-store-password: "CHANGE_ME"
# 证书类型
ssl-key-store-type: PKCS12
# 协议 默认为 TLSv1.2 版本
protocol: TLSv1.2
# 算法 默认为 sunx509
algorithm: sunx509
# 交互密钥 AES(需与客户端一致,请自行生成后替换)
aes-key: "CHANGE_ME_BASE64_AES_KEY"
# 交互签名 key 需要与客户端一致
token-key: "CHANGE_ME_TOKEN_KEY"- 执行如下命令启动服务端。若需要将配置文件
application.yml拷贝至/usr/web/wiki-proxy/server/并修改相关配置;默认配置环境只有 test,若增加其它环境,需在启动命令中修改-Dspring.profiles.active=xxx,并增加相应环境配置文件:
bash
nohup java -jar -Dspring.profiles.active=test -Dconfig.file=/usr/web/wiki-proxy/server/application.yml wiki-proxy-server.jar >> /dev/null &3、部署客户端
- 需要在服务器上新建目录:
/usr/web/wiki-proxy/client/; - 程序日志默认输出到
/opt/log/wiki-proxy-client/,若非 root 账号需要授权:chown -R wiki:wiki /opt/log/;
bash
chown -R wiki:wiki /opt/log/- 将 wiki-proxy-client.zip 解压或自行打包的 Jar 包上传至服务器部署目录;
- 配置文件重点修改如下配置:
yaml
spring:
application:
name: wiki-proxy-client
proxy:
client:
# 服务端ip
service-ip: 127.0.0.1
# 服务端 (TCP) 端口
service-port: 10010
ip:
- 127.0.0.1 # 目标代理ip
dest-port: # 目标代理端口
- 50501
port:
- 443 # 服务端暴露端口
# 证书存放路径(请改为本机真实路径)
ssl-key-store-path: "/etc/wiki-proxy/wiki-proxy.jks"
# 证书密码(请替换为自有强密码)
ssl-key-store-password: "CHANGE_ME"
# 证书类型
ssl-key-store-type: PKCS12
# 协议 默认为 TLSv1.2 版本
protocol: TLSv1.2
# 算法 默认为 sunx509
algorithm: sunx509
# 交互密钥 AES(需与服务端一致,请自行生成后替换)
aes-key: "CHANGE_ME_BASE64_AES_KEY"
# 交互签名 key 需要与服务端一致
token-key: "CHANGE_ME_TOKEN_KEY"- 执行如下命令启动客户端。若需要将配置文件
application.yml拷贝至/usr/web/wiki-proxy/client/并修改相关配置:
bash
nohup java -jar -Dspring.profiles.active=test -Dconfig.file=/usr/web/wiki-proxy/client/application.yml wiki-proxy-client.jar >> /dev/null &Docker 部署
dockerfile
FROM openjdk:17-jre-slim
COPY wiki-proxy.jar /app/
COPY application.yml /app/
WORKDIR /app
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "wiki-proxy.jar"]Kubernetes 部署
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: wiki-proxy
spec:
replicas: 3
selector:
matchLabels:
app: wiki-proxy
template:
metadata:
labels:
app: wiki-proxy
spec:
containers:
- name: wiki-proxy
image: framewiki/wiki-proxy:1.0.8
ports:
- containerPort: 8080
env:
- name: JAVA_OPTS
value: "-Xms1g -Xmx2g"源码与贡献
编译构建
bash
# 克隆代码
git clone https://gitee.com/cdkjframework/wiki-proxy.git
cd wiki-proxy
# Maven 构建
mvn clean package -DskipTests
# 运行测试
mvn test
# 启动服务
java -jar target/wiki-proxy-1.0.8.jar贡献指南
- Fork 项目到个人仓库
- 创建功能分支:
git checkout -b feature/new-feature - 提交更改:
git commit -am 'Add new feature' - 推送到分支:
git push origin feature/new-feature - 创建 Pull Request
社区与支持
交流渠道
- QQ 群:25056933
- 微信公众号:维基框架(framewiki-com)
- 邮件:wiki@framewiki.com
问题反馈
常见问题
Wiki-Proxy 能直接当公网代理服务用吗?
可以自建部署,但必须自行完成证书、密钥轮换、访问控制与合规评估。文档示例不可直接用于生产。
示例配置里的密码和密钥怎么办?
文中均为占位符(CHANGE_ME)。上线前请替换为自有密钥,并限制管理面与监听端口的网络暴露。
问题应提到哪个仓库?
请提交到 Wiki-Proxy Issues,不要提到 Wiki-Framework 仓库。
许可证
本项目采用 MIT License 开源协议。
版本历史
v1.0.0 (2025-03-28)
- 第一个正式版本 v1.0.0
注意:本项目仅供学习和合法用途使用,请遵守当地法律法规。
反馈与交流
在使用过程中有遇到任何问题或想法,都可以提交 issue。
或加入微信交流:

