【问题标题】:Websocket apache proxy issues with sslssl的Websocket apache代理问题
【发布时间】:2016-04-17 12:07:30
【问题描述】:

所以我有一个使用 https 和 websockets 和 socket.io(使用 node.js)的网站。 websocket 最初会尝试直接连接

var socket = io('https://' + socket_ip_addr + ":8443",{'forceNew': true, 'secure': true});

这是我的 socket.io 代码(可以直接连接)

var http = require('https')
var fs = require('fs');

var options = {
    key:    fs.readFileSync('../certs/ssl.key'),
    cert:   fs.readFileSync('../certs/ssl.crt'),
};
var app = http.createServer(options)
var io = require('socket.io').listen(app);
app.listen(8443);

这工作得很好,但是某些用户可能会因为某种原因阻止了该随机端口,所以我有一个后备方法,它尝试将端口 443 与 apache 代理一起使用。

var socket = io('https://' + socket_ip_addr,{'forceNew': true, 'secure': true});

apache 设置:

<VirtualHost *:443>
    ServerName somewebsite.ca
    ServerAlias somewebsite.ca
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile ../certs/ssl.crt
    SSLCertificateKeyFile ../certs/ssl.key

    RewriteEngine on
    RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
    RewriteCond %{QUERY_STRING} transport=websocket    [NC]
    RewriteRule /(.*)           wss://localhost:8443/$1 [P,L]

    ProxyRequests off
    ProxyPass /socket.io/ https://localhost:8443/socket.io/
    ProxyPassReverse /socket.io/ https://localhost:8443/socket.io/
</VirtualHost>

在切换到 https 之前,我曾经这样做过,一切正常。现在我正在尝试使用 https 和 wss 来做这件事,它给了我很好的错误 500(内部服务器错误)

我真正的问题是:我什至如何开始尝试和调试出了什么问题。我可以以某种方式查看一些标题吗?我可以在中间步骤的某处打印一些消息吗?

谢谢。

【问题讨论】:

    标签: node.js html ssl websocket socket.io


    【解决方案1】:

    好吧..我只是愚蠢。我检查了 apache 日志并添加了一些额外的命令,现在它工作正常。其他内容包括:

    SSLProxyEngine on //apache log told me about this
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off
    RequestHeader set Front-End-Https "On"
    

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 2017-09-19
      • 2017-08-03
      • 2021-05-21
      • 2015-10-17
      • 2020-06-14
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      相关资源
      最近更新 更多