Apache生产环境配置Laravel Reverb遇POST路由方法不支持问题求助
Apache环境下Laravel Reverb正确配置步骤
1. 修正生产环境.env配置
确保Reverb配置与生产环境域名、端口匹配,同时指定内部服务监听端口:
REVERB_HOST=www.mydomain.com REVERB_PORT=443 REVERB_SCHEME=https REVERB_APP_ID=你的Reverb应用ID REVERB_APP_KEY=你的Reverb应用密钥 REVERB_APP_SECRET=你的Reverb应用秘钥 REVERB_SERVER_PORT=8080 # Reverb服务本地监听端口,需和后续代理配置一致
2. 完善Apache虚拟主机配置
需要同时处理WebSocket协议升级和Reverb的HTTP事件路由代理,在你的站点配置文件(如/etc/apache2/sites-available/your-site.conf)中添加以下内容:
<VirtualHost *:443> ServerName www.mydomain.com # 常规Laravel站点基础配置 DocumentRoot /var/www/your-project/public <Directory /var/www/your-project/public> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> # 代理Reverb的HTTP事件路由(解决POST请求不支持的核心配置) ProxyPass /apps http://127.0.0.1:8080/apps ProxyPassReverse /apps http://127.0.0.1:8080/apps # WebSocket代理与协议升级处理 RewriteEngine On RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule ^/rews/(.*) ws://127.0.0.1:8080/rews/$1 [P,L] RewriteCond %{HTTP:Upgrade} !=websocket [NC] RewriteRule ^/rews/(.*) http://127.0.0.1:8080/rews/$1 [P,L] # SSL相关配置(根据你的证书信息补充) SSLEngine on SSLCertificateFile /path/to/your/cert.pem SSLCertificateKeyFile /path/to/your/privkey.pem </VirtualHost>
前置要求:启用Apache必要模块,执行以下命令后重启服务:
a2enmod proxy proxy_http proxy_wstunnel rewrite systemctl restart apache2
3. 托管Reverb服务(生产环境必备)
用systemd或Supervisor确保Reverb进程持续运行,这里以systemd为例:
创建服务文件/etc/systemd/system/reverb.service:
[Unit] Description=Laravel Reverb Service After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/var/www/your-project ExecStart=/usr/bin/php artisan reverb:start Restart=always [Install] WantedBy=multi-user.target
启动并设置开机自启:
systemctl daemon-reload systemctl start reverb systemctl enable reverb
4. 验证配置有效性
用curl测试Reverb的HTTP事件路由是否正常响应POST请求:
curl -X POST https://www.mydomain.com/apps/你的Reverb应用ID/events \ -H "Authorization: Bearer 你的Reverb应用密钥" \ -H "Content-Type: application/json" \ -d '{"channels":["test-channel"], "event":"test-event", "data":{"msg":"hello"}}'
返回200级响应则说明HTTP路由代理正常。
常见排查点
- 检查Reverb是否在监听8080端口:
netstat -tulpn | grep 8080 - 查看Apache错误日志(
/var/log/apache2/error.log)和Reverb日志(storage/logs/reverb.log)定位具体错误 - 确保服务器防火墙允许本地127.0.0.1:8080的连接(无需对外开放8080端口)
内容的提问来源于stack exchange,提问作者Jivko Jelev
相关产品推荐
相关产品推荐

