hitch配置完全指南:掌握20+核心参数的最佳实践
hitch是一款由Varnish Software开发的可扩展TLS代理,能够帮助用户轻松实现HTTPS加密并将流量转发到后端服务器。本指南将详细介绍hitch的核心配置参数,帮助新手用户快速掌握配置技巧,实现安全高效的TLS代理服务。
基础配置:快速上手
核心参数概览
hitch的配置主要包括证书设置、监听地址、后端服务器和工作进程等基本参数。以下是最常用的核心配置项:
pem-file:指定包含私钥和证书的PEM文件路径frontend:设置监听地址和端口backend:配置后端服务器地址workers:指定工作进程数量,通常建议每个核心一个进程
最小化配置示例
创建一个简单的配置文件hitch.conf:
pem-file = "/etc/hitch/certs/example.com.pem"
frontend = "[*]:443"
backend = "[127.0.0.1]:80"
workers = 4
这个配置将在所有网络接口的443端口监听HTTPS请求,并将解密后的流量转发到本地80端口的后端服务。
证书管理:保障安全通信
PEM文件准备
hitch需要PEM格式的证书文件,包含私钥、服务器证书和中间CA证书。创建方法如下:
$ cat example.com.key example.com.crt intermediate.pem > example.com.pem
如果需要支持Diffie-Hellman密钥交换(提供前向保密性),还需添加DH参数:
$ openssl dhparam -rand - 2048 >> example.com.pem
详细的证书创建步骤可参考docs/certificates.md。
多证书配置
对于托管多个域名的场景,可以配置多个证书:
pem-file = "/etc/hitch/certs/site1.example.com.pem"
pem-file = "/etc/hitch/certs/site2.example.com.pem"
pem-file = "/etc/hitch/certs/wildcard.example.com.pem"
hitch会根据客户端的SNI(服务器名称指示)自动选择匹配的证书。最后一个证书将作为默认证书,当没有匹配项时使用。
OCSP stapling配置
OCSP stapling可以提高TLS握手性能并增强隐私保护。启用自动OCSP stapling:
ocsp-dir = "/var/lib/hitch/ocsp"
ocsp-verify-staple = on
ocsp-connect-tmo = 5
ocsp-resp-tmo = 10
hitch将自动从证书中指定的OCSP响应器获取和更新OCSP响应。ocsp-dir目录需要hitch用户可读写。
高级网络配置:优化性能与兼容性
前端监听配置
通过frontend参数可以配置多个监听端点,支持不同的IP地址、端口和证书组合:
frontend = "[192.0.2.10]:443+certs/site1.example.com.pem"
frontend = "[192.0.2.11]:443+certs/site2.example.com.pem"
frontend = "[*]:8443"
这种配置适用于需要为不同域名使用不同IP地址的传统场景,或需要在非标准端口提供服务的情况。
后端代理设置
配置后端服务器时,可以启用PROXY协议来传递客户端真实IP:
backend = "[192.168.1.100]:8080"
write-proxy = on
PROXY协议支持v1(文本格式)和v2(二进制格式),可以通过write-proxy-v1或write-proxy-v2参数指定。详细信息请参考docs/proxy-protocol.md。
TLS协议与密码套件
控制支持的TLS协议版本和密码套件:
tls-protos = TLSv1.2 TLSv1.3
ciphers = "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"
alpn-protos = "h2,http/1.1"
默认情况下,hitch只启用TLS 1.2和1.3,这是兼顾安全性和兼容性的推荐配置。alpn-protos参数用于配置ALPN协商,支持HTTP/2需要设置此参数。
TCP快速打开
在支持的系统上启用TCP快速打开可以减少网络延迟:
tcp-fastopen = on
此功能可以节省TCP握手的一个往返时间,特别适合移动设备用户。
运行环境优化:提升稳定性与安全性
用户与权限
为了安全起见,hitch应以root权限启动(以便监听1024以下端口),然后切换到非特权用户:
user = "hitch"
group = "hitch"
确保配置的用户具有证书文件和OCSP目录的适当访问权限。
工作进程设置
根据服务器CPU核心数配置工作进程数量:
workers = 4
通常建议每个CPU核心运行一个工作进程,以充分利用系统资源。
配置重载
hitch支持不中断服务的配置重载,通过发送SIGHUP信号实现:
$ kill -HUP $(cat /var/run/hitch.pid)
重载功能支持更新证书和监听端点等配置,非常适合需要频繁更新证书的场景。
虚拟主机配置:多域名支持
SNI-based虚拟主机
现代客户端支持SNI,可以使用单个IP地址托管多个域名:
frontend = "[*]:443"
pem-file = "/etc/hitch/certs/site1.example.com.pem"
pem-file = "/etc/hitch/certs/site2.example.com.pem"
pem-file = "/etc/hitch/certs/wildcard.example.com.pem"
hitch会根据客户端提供的服务器名称自动选择合适的证书。如果没有匹配的证书,可以选择终止连接:
sni-nomatch-abort = on
传统虚拟主机
对于不支持SNI的旧客户端,需要为每个域名配置单独的IP地址:
frontend = "[192.0.2.10]:443+certs/site1.example.com.pem"
frontend = "[192.0.2.11]:443+certs/site2.example.com.pem"
这种配置需要多个IP地址,但可以兼容非常旧的客户端。详细信息请参考docs/vhosts.md。
实用配置示例
基本生产配置
# 证书配置
pem-file = "/etc/hitch/certs/example.com.pem"
ocsp-dir = "/var/lib/hitch/ocsp"
ocsp-verify-staple = on
# 网络配置
frontend = "[*]:443"
backend = "[192.168.1.100]:80"
write-proxy-v2 = on
tcp-fastopen = on
# TLS配置
tls-protos = TLSv1.2 TLSv1.3
ciphers = "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"
alpn-protos = "h2,http/1.1"
# 运行配置
workers = 4
user = "hitch"
group = "hitch"
pidfile = "/var/run/hitch.pid"
支持旧客户端的配置
# 兼容旧客户端
ssl = on
tls-protos = TLSv1.0 TLSv1.1 TLSv1.2
ciphers = "HIGH:!aNULL:!MD5"
# 多IP配置
frontend = "[192.0.2.10]:443+certs/site1.example.com.pem"
frontend = "[192.0.2.11]:443+certs/site2.example.com.pem"
backend = "[192.168.1.100]:80"
write-proxy = on
# 运行配置
workers = 2
user = "hitch"
group = "hitch"
总结
hitch是一个功能强大且灵活的TLS代理,通过合理配置可以满足各种场景需求。从基本的HTTPS终止到高级的OCSP stapling和HTTP/2支持,hitch提供了全面的功能集。
关键配置要点:
- 使用最新的TLS协议版本(TLS 1.2+)
- 配置强密码套件并启用前向保密性
- 正确设置证书链和OCSP stapling
- 根据服务器资源调整工作进程数量
- 使用PROXY协议将客户端IP传递给后端
通过本指南介绍的20+核心参数,您可以构建安全、高效且稳定的TLS代理服务。更多高级配置选项,请参考官方文档docs/configuration.md。
要开始使用hitch,可以克隆仓库:git clone https://gitcode.com/gh_mirrors/hi/hitch,然后按照安装说明进行部署。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



