Workerman 4.0.20 HTTP/2 协议支持实战

夏杰大大_5300

夏杰大大_5300

2026-08-08

715人浏览

原创

必须依赖外部反向代理(如 nginx)终止 tls 并协商 http/2,workerman 4.0.20 自身不支持 http/2;需确认 php ≥ 8.1、启用 openssl/curl 扩展,并配置 nginx 启用 http2 模块及 tlsv1.3。

workerman 4.0.20 http/2 协议支持实战

要在 Workerman 4.0.20 中启用 HTTP/2 协议,必须绕过其原生 HTTP Worker 的限制——它仅支持 HTTP/1.1,且不内置 TLS 握手与 ALPN 协商能力。

确认 Workerman 版本与 PHP 环境兼容性

执行 php -v 确认 PHP 版本 ≥ 8.1;运行 php -m | grep openssl 和 php -m | grep curl 验证 openssl 与 curl 扩展已启用。Workerman 4.0.20 本身不提供 HTTP/2 支持,【必须依赖外部反向代理(如 Nginx)终止 TLS 并协商 HTTP/2】,否则直接用 Workerman 启动的 http:// 地址永远无法触发 HTTP/2。

配置 Nginx 作为 HTTP/2 入口网关

编辑 Nginx 配置文件(如 /etc/nginx/sites-enabled/workerman.conf),添加以下内容:

server {
 listen 443 ssl http2;
 server_name example.com;
 ssl_certificate /path/to/fullchain.pem;
 ssl_certificate_key /path/to/privkey.pem;
 ssl_protocols TLSv1.3;
 ssl_prefer_server_ciphers off;
 location / {
  proxy_pass http://127.0.0.1:8080;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
 }
}

注意:Nginx 必须编译时启用 --with-http_v2_module,且 OpenSSL ≥ 1.0.2(推荐 3.0+)。若 reload 失败并提示 unknown directive "http2",说明 Nginx 版本过低(需 ≥ 1.9.5)。

启动 Workerman HTTP Worker(纯 HTTP/1.1 后端)

创建 server.php:

TextCortex
TextCortex

一款集AI写作、改写和知识辅助于一体的内容创作工具,可帮助用户快速完成多种类型的文本撰写与编辑任务。

下载

require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;

$http_worker = new Worker('http://0.0.0.0:8080');
$http_worker->count = 4;
$http_worker->onMessage = function ($connection, $request) {
 // 此处 request 实际来自 Nginx 转发,协议版本为 HTTP/1.1
 $connection->send("HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nHello from Workerman over HTTP/2 (via Nginx)");
};

Worker::runAll();

运行 php server.php start -d。此时 Workerman 仅监听本地 8080 端口,不做 TLS,不处理 ALPN,完全交由 Nginx 承担 HTTP/2 协商职责。

验证 HTTP/2 是否生效

方法一:浏览器开发者工具 → Network 标签页 → 刷新页面 → 查看任意请求的 Protocol 列,显示 h2 即成功;

方法二:终端执行 curl -I --http2 https://example.com,响应头中出现 HTTP/2 200 且无降级提示;

方法三:在 Chrome 访问 chrome://net-internals/#http2,搜索域名,确认存在活跃的 HTTP/2 会话流。若仍显示 h1,检查 Nginx 是否监听了 443 ssl http2、证书是否有效、域名是否匹配、客户端是否支持(旧版 Android WebView 或 IE11 不支持)。

相关专题

更多
http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.09

3123

4

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

2023.11.14

834

3

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

2024.03.12

6266

8

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.16

5330

6

Go 语言 HTTP 编程与中间件开发教程合集
Go 语言 HTTP 编程与中间件开发教程合集

全面讲解 Go 语言 HTTP 编程的核心知识,涵盖 net/http 标准库的 Server/Handler/HandlerFunc 体系、DefaultServeMux 路由注册与自定义路由器、Request / ResponseWriter 请求响应处理、中间件(Middleware)链式设计模式与常见中间件(日志/CORS/认证/限流)开发、http.Client 的超时配置与连接池管理、Cookie / Session 处理、

2026.05.08

441

31

Workerman安装配置教程
Workerman安装配置教程

Workerman安装配置教程专题提供Workerman安装配置、WebSocket开发、TCP通信、异步编程、高并发服务搭建与PHP实时通信开发教程。

2026.05.20

166

15

Workerman实时通信与长连接开发教程
Workerman实时通信与长连接开发教程

WWorkerman实时通信与长连接开发教程聚合实时通信、聊天室、长连接、消息推送、AI流式输出等Workerman高并发开发内容。

2026.05.20

202

12

Workerman异步通信与TCP服务器开发
Workerman异步通信与TCP服务器开发

Workerman异步通信与TCP服务器开发专题整理Workerman异步通信、TCP服务、HTTP服务、WebSocket开发与高并发PHP服务器教程。

2026.05.20

187

13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webman中文手册
Webman中文手册

共0课时 | 0人学习

Workerman官方手册
Workerman官方手册

共0课时 | 0人学习

ThinkPHP5.1完全开发手册
ThinkPHP5.1完全开发手册

共0课时 | 0人学习