如何配置Apache实现Laravel Reverb WebSocket请求转发?
Apache下Laravel Reverb的WebSocket(wss)转发配置方案
要将wss://mydomain.com/app的请求转发到本地0.0.0.0:8080,需按以下步骤配置Apache:
1. 启用必要的Apache模块
首先确保启用反向代理及WebSocket相关模块:
a2enmod proxy proxy_http proxy_wstunnel rewrite
2. 配置虚拟主机
打开你的域名虚拟主机配置文件(通常位于/etc/apache2/sites-available/your-domain.conf),添加以下配置块:
<VirtualHost *:443> ServerName mydomain.com # SSL 配置(已有则保留) SSLEngine on SSLCertificateFile /path/to/your/cert.pem SSLCertificateKeyFile /path/to/your/privkey.pem # 处理WebSocket升级请求 RewriteEngine On RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule /app/(.*) ws://0.0.0.0:8080/app/$1 [P,L] # 反向代理配置 ProxyPass /app http://0.0.0.0:8080/app ProxyPassReverse /app http://0.0.0.0:8080/app # 设置请求头,对应Nginx配置中的参数 RequestHeader set Host "%{HTTP_HOST}e" env=HTTP_HOST RequestHeader set Scheme "%{REQUEST_SCHEME}e" RequestHeader set SERVER_PORT "%{SERVER_PORT}e" RequestHeader set REMOTE_ADDR "%{REMOTE_ADDR}e" RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}e" RequestHeader set Upgrade "%{HTTP:Upgrade}e" env=HTTP_UPGRADE RequestHeader set Connection "Upgrade" env=HTTP_UPGRADE # 其他已有配置(如Laravel的前端路由转发)保留不变 </VirtualHost>
3. 验证配置并重启Apache
检查配置是否合法:
apache2ctl configtest
如果输出Syntax OK,则重启Apache生效:
systemctl restart apache2
关键说明
RewriteRule用于识别WebSocket升级请求,将wss协议转发为ws协议到本地端口ProxyPass和ProxyPassReverse负责常规HTTP请求的反向代理- 所有
RequestHeader配置对应Nginx示例中的头部设置,确保Reverb能正确获取客户端信息
内容的提问来源于stack exchange,提问作者Jivko Jelev
相关产品推荐
相关产品推荐

