CloudFlareをCDN /保護に使用してNode.JS + Socket.IOでApacheを実行しようとしていますが、問題が起こっています。私はこれが520 HTTPエラーを与えるProxyPassディレクティブApache + Node.JS + Socket.IO + CloudFlare // SSLエラー
<VirtualHost *:80>
ServerName play.example.me
ServerAlias example.me
DocumentRoot /home/web/
AccessFileName .htaccess
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests off
<Location /socket.io>
ProxyPreserveHost On
ProxyPass ws://localhost:8080/socket.io/
ProxyPassReverse ws://localhost:8080/socket.io/
</Location>
</VirtualHost>
含む(つまり、SSL経由ではない)Socket.IO接続を扱うのApacheに多くの方法をtryiedまし
、それはCloudFlareの一般的なエラーです。
私は、Node.JS + Socket.IOでLet's EncryptのSSL証明書を使用するように試しましたが、ERR_SSL_PROTOCOL_ERRORを与えました。
私はNode.jsの上のサーバーを作成するために使用しているコードは、私が実際にサブドメイン処理するためにはProxyPassを使用してい
var app = new express();
var options = {
key: fs.readFileSync("/etc/letsencrypt/live/play.example.me/privkey.pem"),
cert: fs.readFileSync("/etc/letsencrypt/live/play.example.me/cert.pem"),
ca: fs.readFileSync("/etc/letsencrypt/live/play.example.me/chain.pem"),
requestCert: false,
rejectUnauthorized: false
};
var server = require("https").createServer(options, app);
var io = require("socket.io").listen(server, { serveClient: false });
である「APIを。」 Node.JS/Expressに渡されます。
<VirtualHost *:80>
ServerName api.example.me
ServerAlias example.me
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:8080/
ProxyPassReverse http://localhost:8080/
</Location>
</VirtualHost>
これは動作していますが、WebOSocketは動作しません。 Apacheを使用しない場合(Expressで直接実行している場合)、websocketを含め、すべて正常に動作します。しかし、WebサイトがPHPで書かれているので、Apacheを実行する必要もあります。
何か間違っていますか?
あなたが例えば、WebSocketのトラフィックではProxyPassを使用するようにApacheモジュールのmod_proxy_wstunnelを使用することができます
私はSSLを使用するとSocket.IOを使用していますが、なんらかの理由でERR_SSL_PROTOCOL_ERRORを返します。 –
その後、WSではなくWSSを使用する必要があります。 mod_proxy_wstunnelでProxy Passを使用すると、WSをWSSに変換することができます。代わりに、Javascriptでこれをネイティブに行うこともできます。 http://www.giacomovacca.com/2015/02/websockets-over-nodejs-from-plain-to.html – mjsa
WSをWSSに変換するにはどうすればよいですか?私はSocket.IO上でSSLを使用するためにtryiedしましたが、私が言ったように、それは私にERR_SSL_PROTOCOL_ERRORを与えます。そして、 "ProxyPass ws:// localhost:8080/socket.io /"を使用すると、HTTPエラー520が返されます –