, так что в настоящее время я работаю над проектом, который был развернут на экземпляре Amazon aws EC2, и проблема, с которой я столкнулся, заключается в том, чтобы заставить socket.io работать на https. Проблема в том, что клиент не подключается. Сокеты нормально работают локально на экземпляре EC2. Как только я перехожу на https, он перестает работать. Что мне следует сделать иначе, чтобы мне помочь.
Вот мой код.
На стороне клиента:
const socket = socketIOClient("url:5020", {secure: true, path: 'socket/socket.io'} )
На стороне сервера:
const https = require( "https" );
const httpsPort = 5020;
const httpsServer = https.createServer({
"key" : fs.readFileSync( "/home/ubuntu/keys/privatekey.pem" ),
"cert": fs.readFileSync( "/home/ubuntu/keys/certkey.pem" ),
});
httpsServer.listen( httpsPort, function() {
console.log( `Listening HTTPS on ${httpsPort}` );
});
const io = require('socket.io')(httpsServer, {
path: '/socket/socket.io'
});
Nginx config:
server {
listen 443;
ssl on;
ssl_certificate .../cert.pem;
ssl_certificate_key .../privatekey.pem;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
server_name example.co;
access_log /var/log/access.log;
error_log /var/log/error.log;
# react
root ../build;
index index.html index.htm;
location / {
try_files $uri /index.html =404;
}
# node api reverse proxy
location /api/ {
proxy_pass http://localhost:5000/;
proxy_redirect off;
proxy_set_header Host $host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_set_header X-Forwarded-Proto https;
}
location /socket/ {
proxy_pass http://localhost:5020/;
proxy_redirect off;
proxy_set_header Host $host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_set_header X-Forwarded-Proto https;
}
}
Спасибо за помощь!