2017-10-02 17 views
1

WebSocketサーバーをHTTPSにアップグレードしようとしていますが、何か問題があります。私は、SSL & Co.で気取って回り始めました。websocketサーバーはノードで書かれており、websocketだけを扱い、フロントサーバーはApacheであり、クライアントアプリケーションを提供します。WebSocketサーバーへのApacheのプロキシは機能しません

のWebSocket側(基本的に)である:ws = new WebSocket("wss://dev.domain/ws");と線がトリガされたときにChromeは威嚇を言う:

<VirtualHost *:443> 
ServerName dev.domain 
DocumentRoot /var/www/domain/client_dev 

    <Directory /var/www/domain/client_dev/> 
     Options -Indexes +FollowSymLinks 
     AllowOverride All 
     Require all granted 
    </Directory> 

    CustomLog ${APACHE_LOG_DIR}/access.log common_complete 

    <IfModule mod_dir.c> 
     DirectoryIndex index.php index.pl index.cgi index.html index.xhtml $ 
    </IfModule> 

SSLEngine on 
SSLProxyEngine on 
SSLCertificateFile /etc/letsencrypt/live/domain/cert.pem 
SSLCertificateKeyFile /etc/letsencrypt/live/domain/privkey.pem 
SSLCertificateChainFile /etc/letsencrypt/live/domain/fullchain.pem 

<Location "/ws/"> 
    ProxyPass "wss://localhost:36245/ws" 
</Location> 

<FilesMatch "\.(cgi|shtml|phtml_php)$"> 
    SSLOptions +StdEnvVars 
</FilesMatch> 
</VirtualHost> 

テストクライアントは、次の行を有しているバーチャルホスト

const websock = require('./node_modules/ws'); 
const fs = require('fs'); 

console.log("Starting VoxelatedAvacado server."); 
const server = require('https').createServer({ 
    cert: fs.readFileSync('/etc/letsencrypt/live/domain/cert.pem'), 
    key: fs.readFileSync('/etc/letsencrypt/live/domain/privkey.pem'), 
    port: 36245 
}); 
const wss = new websock.Server({ server: server, path: "/ws"}); 

とApache WebSocket connection to 'wss://dev.domain/ws' failed: Error during WebSocket handshake: Unexpected response code: 404。 Apacheのエラーログには行は表示されません。

ありがとうございました!

答えて

1

あなたが使用している場合が起こる:

はProxyPass「WSS:// localhostを:36245/WS/

、マッチング '/' sの末尾

です
関連する問題