You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:18:21