hyperf 通过 nginx 反向代理运行只需三步:启动 hyperf(默认监听 127.0.0.1:9501)、配置 nginx 转发规则(含必要请求头透传)、验证服务可用;需确保 proxy_pass 地址正确、超时设置合理,并启用 websocket 支持。

直接在 Linux 上让 Hyperf 通过 Nginx 反向代理跑起来,核心就三步:启动 Hyperf、配好 Nginx 转发规则、确保关键请求头不丢。Hyperf 默认监听 127.0.0.1:9501(HTTP),不需要改源码,只要 Nginx 正确透传,它就能立刻对外服务。
启动 Hyperf 服务
确保 Hyperf 已安装并能正常运行:
- 进入项目根目录,执行
php bin/hyperf.php start - 默认监听
127.0.0.1:9501,可通过netstat -tuln | grep 9501验证端口是否占用并监听成功 - 如需外网访问或调试,可临时改为监听
0.0.0.0:9501(仅限测试环境,生产务必限制为 127.0.0.1)
配置 Nginx 反向代理规则
推荐使用独立站点配置(如 /etc/nginx/sites-available/hyperf),内容如下:
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或 IP
root /var/www/html; # 可选,仅用于 fallback 或静态资源
location / {
proxy_pass http://127.0.0.1:9501;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
}
说明:
• proxy_http_version 1.1 和 Upgrade/Connection 头对 WebSocket 支持至关重要(Hyperf 常用)
• 超时设为 300 秒,避免长连接或协程任务被意外中断
• 若你用的是 CentOS/RHEL,没有 sites-available 目录,可将配置放入 /etc/nginx/conf.d/hyperf.conf
启用配置并验证
执行以下命令激活配置:
- 软链接启用(Ubuntu/Debian):
sudo ln -sf /etc/nginx/sites-available/hyperf /etc/nginx/sites-enabled/ - 测试语法:
sudo nginx -t—— 必须显示 “syntax is ok” 和 “test is successful” - 重载生效:
sudo systemctl reload nginx - 访问
http://your-domain.com或服务器 IP,应看到 Hyperf 返回的响应(如 JSON 接口或欢迎页)
常见问题快速排查
如果打不开或返回 502:
-
502 Bad Gateway:检查 Hyperf 是否真的在运行(
ps aux | grep hyperf)、端口是否被占用、proxy_pass地址是否拼错(注意别多空格) -
400 Bad Request:大概率缺
proxy_set_header Host $host;,Hyperf 依赖 Host 判断路由和跨域 -
WebSocket 连接失败:确认已加
Upgrade和Connection两行,且 Nginx 版本 ≥ 1.13.6 -
日志里全是 127.0.0.1:漏了
X-Real-IP和X-Forwarded-For,后端无法获取真实用户 IP











