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

如何在Apache上为WebSocket请求配置反向代理(Laravel Reverb场景)

如何在Apache上为WebSocket请求配置反向代理(Laravel Reverb场景)

别担心,我来帮你把Nginx里的WebSocket代理逻辑转换成Apache的配置,这样你的Laravel Reverb就能正常接收wss请求了!咱们一步步来:

第一步:启用Apache必需的模块

Apache要处理WebSocket反向代理,得先开几个关键模块,没有它们的话配置根本不生效。

如果你用的是Ubuntu/Debian系列系统

直接在终端跑这行命令:

sudo a2enmod proxy proxy_http proxy_wstunnel rewrite ssl

然后重启Apache让模块生效:

sudo systemctl restart apache2

如果你用的是CentOS/RHEL系列系统

需要编辑Apache的模块配置文件(比如/etc/httpd/conf.modules.d/00-proxy.conf或者主配置文件/etc/httpd/conf/httpd.conf),确保以下模块被加载:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule ssl_module modules/mod_ssl.so

保存后重启Apache:

sudo systemctl restart httpd

第二步:修改你的Apache虚拟主机配置

因为你用的是wss(加密的WebSocket),所以配置要写在监听443端口的SSL虚拟主机里,把wss://mydomain.com/app的请求转发到本地的0.0.0.0:8080。

找到你对应mydomain.com的虚拟主机配置,修改成类似这样(保留你原来的SSL证书配置,只添加WebSocket相关的部分):

<VirtualHost *:443>
    ServerName mydomain.com

    # 保留你现有的SSL证书配置(这部分不能丢,wss必须依赖SSL)
    SSLEngine On
    SSLCertificateFile /path/to/your/ssl/certificate.crt
    SSLCertificateKeyFile /path/to/your/ssl/private.key
    SSLCertificateChainFile /path/to/your/ssl/chain.crt # 如果你有证书链的话

    # 核心:把/app路径的WebSocket请求转发到Reverb的8080端口
    ProxyPass /app ws://0.0.0.0:8080/app
    ProxyPassReverse /app ws://0.0.0.0:8080/app

    # 确保WebSocket必需的HTTP头正确传递
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /app(.*) ws://0.0.0.0:8080/app$1 [P,L]

    # 保留你原来的Laravel站点配置(比如处理正常HTTP请求到PHP-FPM的部分)
    # ... 这里放你之前的<Directory>、FcgidPass等配置 ...
</VirtualHost>

第三步:验证配置并重启Apache

先检查Apache配置有没有语法错误:

  • Ubuntu/Debian:sudo apache2ctl configtest
  • CentOS/RHEL:sudo httpd -t

如果输出Syntax OK,就重启Apache:

  • Ubuntu/Debian:sudo systemctl restart apache2
  • CentOS/RHEL:sudo systemctl restart httpd

小提示

  • 确保你的服务器防火墙允许Apache访问本地的8080端口(因为是本地转发,一般默认允许,但如果有严格的防火墙规则,可能要加一条允许规则)
  • 测试的时候打开浏览器开发者工具的「网络」标签,筛选「WS」类型,看看wss://mydomain.com/app的连接状态是不是101 Switching Protocols,如果是就说明成功了

备注:内容来源于stack exchange,提问作者Jivko Jelev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 12:07:58