如何在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
相关产品推荐
相关产品推荐

