У меня есть веб-сайт, работающий по протоколу https, и в рамках новой функции я создал сервер разговоров на основе nodejs + socket.io.
Я решил разместить сервер разговоров в отдельном экземпляре AWS.
Когда я пытаюсь установить сокет-соединение с моего основного веб-сайта (работающего по протоколу https) на сервер разговоров (работающий на статическом IP-экземпляре AWS, например http://123.123.45.56), тогда он не устанавливает сокет-соединение должным образом, и браузер показывает следующую ошибку, зарегистрированную на консоли:
Mixed Content: The page at 'https://www.mydomain' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://123.123.45.56/socket.io/?payload=asdfkasdla'. This request has been blocked; the content must be served over HTTPS.
Вот как я делаю сервер узла соединения:
io.connect(chatServerURL,{query: "payload=" + encryptedPayload,secure: false});
На сервере разговоров я маршрутизирую весь трафик, поступающий через порт 80 с маршрутом /socket.io, на локальный узел, порт сервера и сервер, следующим образом:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:3000/$1 [P,L]
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
Что я должен сделать, чтобы это работало?
У меня нет домена для использования только для сервера чата, а затем назначить ssl этому домену Я знаю, что это не должно быть способом заставить это работать.
Каково его решение?