![](/img/trans.png)
[英]setup nginx ssl nodejs+express socket.io angularjs
[英]How to setup SSL under node express socket.io?
我基本上有像這樣開始的node.js代碼:
var app = require('express')();
var http = require('http').createServer(app).listen(5051, function() {
console.log('listening on 127.0.0.1:5051');
});
var io = require('socket.io')(http);
var lobby = io.of('/lobby');
lobby.on("connection", function (socket) {
console.log("Successful connection lobby");
});
所以我啟動服務器,啟動應用程序,建立連接,沒問題。 但是,嘗試添加SSL無效。 我遵循了使用內部地址作為通用名稱從該網站創建證書的說明。
var app = require('express')();
var fs = require('fs');
var options = {
key : fs.readFileSync('/"path_to"/hacksparrow-key.pem'),
cert : fs.readFileSync('/"path_to"/hacksparrow-cert.pem')
};
var https = require('https').createServer(options,app).listen(5051, function() {
console.log('listening on 127.0.0.1:5051');
});
var io = require('socket.io')(https);
var lobby = io.of('/lobby');
lobby.on("connection", function (socket) {
console.log("Successful connection lobby");
});
確保我的客戶端使用https而不是http,沒有連接,什么也沒有。 任何人都知道為什么會這樣,而且,如果我使用的是Nginx之類的東西,並且在上面使用了ssl,是否還需要執行此步驟?
聽起來問題在於nginx正在將HTTP請求發送到您的節點https服務器。
如果將nginx設置為使用ssl,則節點不必使用ssl。 如果需要,兩台服務器都可以使用ssl。
您的證書通常會使用密碼生成。 這是啟動SSL所必需的。
因此,當您啟動應用程序時,node.js將提示您一次。 您可以通過在變量“選項”中添加“密碼”鍵來繞開該密碼
var options = {
key : fs.readFileSync('/"path_to"/hacksparrow-key.pem'),
cert : fs.readFileSync('/"path_to"/hacksparrow-cert.pem'),
passphrase: type_your_certificate's_passphrase
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.