У меня есть сервер Debian 9, сервер A, который обслуживает страницу https (сборка с ReactJS) через Nginx, сертификат был получен с помощью Certbot.
На сервере A у меня также есть серверная частьфайл NodeJS, который я использую для обслуживания входящих соединений socket.io через определенный порт и запускаю его с помощью команды «node file.js».
Внешний интерфейс работал нормально, когда я использовалhttp, но как только я переключился на https, клиентский интерфейс больше не мог подключаться к серверному серверу с сообщениями об ошибках (в Firefox), такими как:
Блокированная загрузка смешанного активного контента.
Это соответствующий код на стороне клиента:
import * as io from "socket.io-client";
const socket = io.connect("http://publicip.of.my.server:7419");
Это соответствующий код на стороне сервера:
const server = require('http').createServer()
const io = require('socket.io')(server)
...
server.listen(7419, function (err) {
if (err) throw err
console.log('listening on port 3000')
})
Я пытался добавить этона серверный код:
io.set ('origins', ': ');
С этим добавлением я заметилчто соединение socket.io работает, ЕСЛИ я подключаюсь к веб-сайту, используя его публичный IP-адрес (http://publicip.of.my.server),, но не еслиВеб-сайт (который затем перенаправляет на https).
Мои вопросы:
Какие изменения я должен внести в свой код для переключения на https?
Мой интерфейс и сервер находятся на одном сервере A, почему это происходит?