yar*_*rek 9 apache websocket socket.io mod-proxy-wstunnel
我需要在端口443上运行socket.io(其中apache使用Let的加密运行https站点)
我们的想法是使用apache代理将流量重定向到socket.io端口.我找到了解决方案:
<VirtualHost *:443>
ServerName mysite.com
ServerAlias www.mysite.com
SSLEngine on
SSLProxyEngine On
ProxyRequests Off
SSLCertificateFile /etc/apache2/ssl/mysite.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/mysite.com.key
SSLCertificateChainFile /etc/apache2/ssl/ca.cer
DocumentRoot /var/www/errorPages
ErrorDocument 503 /503.html
ProxyPass /503.html !
ProxyPass / http://localhost:3999/
ProxyPassReverse / http://localhost:3999/
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://localhost:3999%{REQUEST_URI} [P]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我在端口3999 HTTPS站点上运行socket.io工作正常,但我得到了http 404错误.我想问题是在rewriteCond上.
websocket.js:112 WebSocket连接到'wss://mysite.com/socket.io/?id = 11518237&username = john failed:WebSocket握手期间出错:意外响应代码:404
不同的用途使用不同的IP地址。您<VirtualHost *:443>尝试使用单个虚拟主机的所有 IP 地址。我认为您需要一个<VirtualHost pub.lic.ip.addr:443>用于 Let's Encrypt 的代理和一个<VirtualHost localhost:443>用于 socket.io 代理的代理。
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |