标签: mod-proxy-wstunnel

如何在运行apache的端口443上运行socket.io?

我需要在端口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

apache websocket socket.io mod-proxy-wstunnel

9
推荐指数
1
解决办法
283
查看次数

使用 Node.js 服务器和 Jquery 客户端进行简单的安全 Websocket (wss) 聊天

我已在此聊天中添加了语音,因此现在它是语音/文本组合聊天。您可以在 github 上找到我的贡献,网址如下:

https://github.com/HowardRichman/simple-text-voice-chat-in-node-and-javascript

以下是在 Centos 6.9 中使用 Node.js 服务器和 jquery javascript 客户端进行安全 Websocket 聊天的工作示例。仅涉及两个文件:(1) server.js 和 (2) client.htm。

以下是我使用以下 Linux 命令行运行的 server.js 代码:node server.js

const fs = require('fs');
const https = require('https');
const WebSocket = require('ws');

const server = new https.createServer({
  cert: fs.readFileSync('/var/cpanel/ssl/apache_tls/example.com/combined'),
  key: fs.readFileSync('/var/cpanel/ssl/apache_tls/example.com/combined')
});
const wss = new WebSocket.Server({ server });
var msg;

wss.on('connection', function connection(ws) 
{
  ws.on('message', function incoming(message) 
  {
    msg = message;
    console.log('received: %s', msg);
    wss.clients.forEach(function (client) 
    {
       if (client.readyState == WebSocket.OPEN) 
       {
          client.send( msg …
Run Code Online (Sandbox Code Playgroud)

javascript websocket node.js mod-proxy-wstunnel

5
推荐指数
0
解决办法
2万
查看次数

Apache websocket 重定向到 Tomcat:mod_proxy 和 mod_proxy_wstunnel

我正在尝试使用 mod_proxy 和 mod_proxy_wstunnel 模块将流量从 Apache 重定向到 Tomcat。HTTP 流量重定向没有问题,但我无法使用迄今为止尝试过的任何配置成功重定向 websocket 流量。

我正在使用 Apache 2.4.28 和 Tomcat 8.5.13

我必须说,当我在没有 Apache 的情况下使用 Tomcat 时,websockets 工作得非常好:

在此处输入图片说明

适用于此配置的 Tomcat 连接器是下一个:

<Connector URIEncoding="UTF-8"
        compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
        compression="on"
        compressionMinSize="1024"
        connectionTimeout="20000"
        noCompressionUserAgents="gozilla, traviata"
        port="443"
        protocol="org.apache.coyote.http11.Http11AprProtocol"
        SSLEnabled="true"
        scheme="https"
        secure="true">
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="/opt/tomcat/cert/privkey.pem"
                         certificateFile="/opt/tomcat/cert/cert.pem"
                         certificateChainFile="/opt/tomcat/cert/chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
Run Code Online (Sandbox Code Playgroud)

到此为止已经很清楚了。现在我在 Tomcat 前面启动一个 Apache 服务器,我改变的第一件事是像这样的 Tomcat 连接器:

<Connector URIEncoding="UTF-8"
    compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
    compression="on"
    compressionMinSize="1024"
    connectionTimeout="20000"
    noCompressionUserAgents="gozilla, traviata"
    port="8080"
    protocol="org.apache.coyote.http11.Http11AprProtocol">
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
</Connector>
Run Code Online (Sandbox Code Playgroud)

在 Apache 中,我成功加载了下一个模块(我已经检查过它们确实已加载):

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module …
Run Code Online (Sandbox Code Playgroud)

apache tomcat mod-proxy websocket mod-proxy-wstunnel

2
推荐指数
1
解决办法
5319
查看次数