Hysteria 是一个开源的反向代理和负载均衡工具,广泛应用于 Web 应用、 API 规则路由、 WebSocket 代理等场景,本文将详细指导如何配置 Hysteria 服务器,确保其高效、安全地运行。
安装与部署
-
环境要求
- 操作系统:Linux(推荐 CentOS 7+ 或 Ubuntu 18.04+)
- 内存:建议至少 1GB
- 磁盘空间:至少 1GB
-
安装 Hysteria
-
使用 Docker 安装(推荐):
# 拉取镜像 docker pull hysteria/hysteria:latest # 创建配置目录 mkdir -p /etc/hysteria # 启动 Hysteria 容器 docker run --name=hysteria -d -p 80:80 -p 443:443 -v /etc/hysteria:/etc/hysteria hysteria/hysteria:latest # 进入容器 docker exec -it hysteria sh
-
手动安装(推荐针对非 Docker 环境):
# 下载最新版本 wget https://github.com/hysteria/hysteria/releases/download/v3.1./hysteria-3.1.-linux-amd64.gz # 解压并安装 gunzip hysteria-3.1.-linux-amd64.gz chmod +x hysteria-3.1.-linux-amd64 # 添加到 PATH sudo mv hysteria-3.1.-linux-amd64 /usr/local/bin/hysteria # 初始化配置 hysteria --init
-
配置入口设置
-
默认配置文件
打开/etc/hysteria/hystrix.conf,默认配置如下:# 监听地址 listen_on = 0...:80,443 # 代理域名 proxy_addr = 127...1:80 # 后端域名 backend_addr = 127...1:808 # 认证开关 enable_auth = false # WebSocket 代理 enable_websocket = true # 最大连接数 max_connections = 100 # 内存大小 memory_limit = 256M
-
自定义配置
根据需求修改配置参数:- 监听地址:修改
listen_on为具体 IP 和端口。 - 代理域名:指定要代理的域名。
- 后端地址:设置后端服务器的 IP 和端口。
- 认证开关:启用/禁用 Basic Auth。
- WebSocket 代理:根据需求设置 WebSocket 代理配置。
- 监听地址:修改
路由规则配置
-
添加路由规则
使用hysteria --add命令添加路由规则:hysteria --add "GET /http://www.example.com/healthcheck HTTP/1.1" "http://backend.example.com:808/healthcheck" hysteria --add "GET /api/v1/users/.* HTTP/1.1" "http://backend.example.com:808/api/v1/users/.*" hysteria --add "GET /ws/chat/.* HTTP/1.1" "ws://backend.example.com:808/ws/chat/.*"
-
查看路由规则
使用hysteria --list查看当前路由规则:hysteria --list
后端服务器设置
-
添加后端服务器
使用hysteria --add-backend命令添加后端:hysteria --add-backend "http://backend1.example.com:808" --type http --weight 1 hysteria --add-backend "http://backend2.example.com:808" --type http --weight 1 hysteria --add-backend "tcp://backend3.example.com:1234" --type tcp --weight 1
-
后端权重分配
根据后端服务器的负载均衡需求设置权重:hysteria --update-backend "http://backend1.example.com:808" --weight 2
WebSocket 配置
-
生成 WebSocket 接口类
创建com.example.HysteriaWebSocket类,并继承io.hysterix.websocket.WebSocketHandler:public class HysteriaWebSocket extends WebSocketHandler { @Override public void onConnect(WebSocket socket) { // 连接建立时的逻辑 } @Override public void onTextMessage(WebSocket socket, String message) { // 收到文本消息时的逻辑 } @Override public void onBinaryMessage(WebSocket socket, byte[] data) { // 收到二进制数据时的逻辑 } @Override public void onClose(WebSocket socket, int code) { // 连接关闭时的逻辑 } } -
打包 WebSocket 接口
将生成的类打包到hysteria-3.x.x.jar的lib目录下:jar cvf hysteria.jar com/example/HysteriaWebSocket.class
-
配置 WebSocket 路由
在hystrix.conf中添加 WebSocket 路由:# WebSocket 代理设置 enable_websocket = true websocket_handler = com.example.HysteriaWebSocket
安全配置
-
启用 Basic Auth
修改hystrix.conf中的enable_auth为true,并设置用户名和密码:enable_auth = true basic_auth_username = admin basic_auth_password = password
-
设置 IP 白名单
防止未授权的访问:hysteria --set "restrict_source" "192.168.1./24,192.168.2./24"
监控与日志
-
启用日志
在hystrix.conf中设置日志级别:log_level = INFO
-
监控日志
使用 Prometheus 和 Grafana监控 Hysteria 的日志和性能指标。
常见问题及解决方法
-
服务无法访问后端服务器
- 检查后端服务器是否运行。
- 确保后端服务器在 Hysteria 的
allowed_sources中包含。
-
配置错误
- 使用
hysteria --help查看所有命令选项。 - 使用
hysteria --dump-config查看当前配置。
- 使用
通过以上步骤,用户可以轻松配置 Hysteria 服务器,并根据实际需求进行优化,Hysteria 的灵活配置和强大的功能,使其成为高效的反向代理和负载均衡解决方案。









