# HTTP/2
简单地说 HTTP/2 是 HTTP/1.1 的升级版(目前大多数网页还是 HTTP/1.1),点击这里 (opens new window)可以直观地体会到 HTTP/2 相比于 HTTP/1.1 的提升(不代表 V2Ray 中 HTTP/2 相对于 TCP 的提升就是这样的)。HTTP/2 协议一般简称为 h2。
在 v2ray 中使用 h2,经常被用户们用来跟 websocket 方式做比较。从理论上来说,HTTP/2 在首次连接时,不像 websocket 需完成 upgrade 请求;v2ray 客户端和服务端之间一般直接通信,较少中间层代理。但是,在配合 CDN、Nginx/Caddy/Apache 等服务组件作为前置分流代理的应用场景上,h2 没有 websocket 方式灵活,因为很多代理并不提供 h2 协议的后端支持。实际使用中,websocket 和 h2 的方式,在体验上很可能没有明显区别,用户可自行根据需要选择。
# 配置
与其它的传输层协议一样在 streamSettings 中配置,不过要注意的是使用 HTTP/2 要开启 TLS。
# 服务器配置
{
"inbounds": [
{
"port": 443,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811",
"alterId": 64
}
]
},
"streamSettings": {
"network": "h2", // h2 也可写成 http,效果一样
"httpSettings": { //此项是关于 HTTP/2 的设置
"path": "/ray"
},
"security": "tls", // 配置tls
"tlsSettings": {
"certificates": [
{
"certificateFile": "/etc/v2ray/v2ray.crt", // 证书文件,详见 tls 小节
"keyFile": "/etc/v2ray/v2ray.key" // 密钥文件
}
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
# 客户端配置
{
"inbounds": [
{
"port": 1080,
"listen": "127.0.0.1",
"protocol": "socks",
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
},
"settings": {
"auth": "noauth",
"udp": false
}
}
],
"outbounds": [
{
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "mydomain.me",
"port": 443,
"users": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811",
"alterId": 64
}
]
}
]
},
"streamSettings": {
"network": "h2",
"httpSettings": { //此项是关于 HTTP/2 的设置
"path": "/ray"
},
"security": "tls"
}
}
]
}
# 更新历史
- 2018-03-18 初版
- 2018-08-30 Update
- 2018-11-17 V4.0+ 配置
- 2019-07-11 更新 h2 描述