Ssl

Socket IO 結合 apache ssl 伺服器

  • January 25, 2019

我正在嘗試在埠 8000 上執行 NodeJS 伺服器以及具有 ssl 證書的 Apache 伺服器。我正在使用虛擬主機和 proxypass 通過 /node 路徑從我的 apache 網站連結到我的 NodeJS 伺服器。

我遇到的問題是我能夠載入使用 Express 外掛提供的頁面,但來自 SocketIO 連接的輪詢似乎失敗了。我已經嘗試了很多東西,但我似乎無法讓它發揮作用。

如果我設置我的客戶聽

var socket = io.connect('example.com:8000', {secure: false});

我的控制台顯示的內容大致如下:

socket.io-1.3.7.js:2 GET https://example.com:8000/socket.io/?EIO=3&transport=polling&t=1451044647116-0 net::ERR_CONNECTION_CLOSED

另外,我知道如何在我的 NodeJS 伺服器上使用 SSL,但我認為它不會工作,因為我也在使用我的 apache 伺服器通過埠 443 進行監聽。

任何人都知道這是否可能和/或如何設置?

編輯:忘了提到我在 Ubuntu 14.04 x64 上執行

我終於想通了。

伺服器端我在我的 nodeJS 應用程序上執行以下程式碼:

var options = {
   key: fs.readFileSync('/home/certificates.key'),
   cert: fs.readFileSync('/home/certificates.crt'),
   requestCert: true
};
var server = require('https').createServer(options, app);
var io = require('socket.io').listen(server);
server.listen(8000);
console.log('Server started at port: 8000');

客戶端我使用我的 Apache 伺服器提供一個頁面,該伺服器僅使用以下內容來建立連接。

var socket = io.connect('example.com:8000', {secure: true});

我從來沒有意識到你可以以這種方式在像 8000 這樣的埠上執行 ssl。

引用自:https://serverfault.com/questions/745248