以前はhttpでSocket.ioスクリプトが正常に動作していましたが、httpsにアップグレードすると問題が発生しました。私はサーバ上に証明書をインストールしましたが、運はありません。サーバーのセットアップのためのコードは次のとおりです。SSL経由のSocket.io Node.jsを使用したゲートウェイのエラー
var https = require('https'),
fs = require('fs');
var options = {
key: fs.readFileSync('/etc/nginx/ssl/default/54082/server.key'),
cert: fs.readFileSync('/etc/nginx/ssl/default/54082/server.crt')
};
var app = https.createServer(options);
var io = require('socket.io').listen(app);
ただし、Webブラウザでページがそれに接続するために失敗し、コンソールがthe server responded with a status of 502 (Bad Gateway)
応答を示しています。
スクリプトの設定が間違っているかどうかについてのご意見はありますか?あるいは、Nginxの設定で何か?
感謝
編集:私は接続するために使用していフロントエンドコード:
<script type="text/javascript" src="https://socket.example.com/socket.io/socket.io.js"></script>
<script>
var io = io('https://socket.example.com', { secure: true });
</script>
編集:: nginxの設定ファイル:
# FORGE CONFIG (DOT NOT REMOVE!)
include forge-conf/socket.example.co.uk/before/*;
server {
listen 443 ssl;
server_name socket.example.co.uk;
root /home/forge/socket.example.co.uk;
# FORGE CONFIG (DOT NOT REMOVE!)
include forge-conf/socket.example.co.uk/server/*;
location/{
proxy_pass https://socket.example.co.uk:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
# FORGE CONFIG (DOT NOT REMOVE!)
include forge-conf/socket.example.co.uk/after/*;
あなたは{確保:真}渡しているが、この行を追加し、サーバーに接続中? http://stackoverflow.com/questions/6599470/node-js-socket-io-with-ssl –
nginxからnode.jsにプロキシする必要はありません。ポートが開いているので、 'io 'で接続します。クライアントからの接続( ':'、{secure:true});は起動して実行するために必要なすべてです。 nginxでプロキシすることはできません(ノードはすべてのインターフェイスにバインドされ、DNS設定のためにドメインはあなたのip:portにルーティングされるため、不要です)。私は文字通り問題なく、昨日私のソケットioをhttpsにアップグレードしました。 –
r3wt
@ r3wtだからあなたはドメインが何か違うべきだと言っているのですか?それは何でしょうか? Iコードを使用してい 'VARのIO = IO( 'https://socket.example.com/socketio/socketio.js'、{確保:真});それ限り必要とされない' – samiles