Я разместил свой веб-сайт на экземпляре EC2, используя Apache. SSL также был настроен правильно, работает на HTTPS, порт 443.
В настоящее время я только что добавил на сайт приложение чата, используя Node.js + socket.io. Сервер Node.js прослушивает порт 3333.
Как я могу запустить два сервера (Apache и Node.js) на одном экземпляре с защищенным SSL? Amazon EC2 не позволяет мне открыть другой порт для HTTPS. Он разрешает только 443 для HTTPS.
Дополнительный порт открывать ни для чего не нужно. Вы можете просто настроить новый виртуальный хост с новым ServerName
используя ProxyPass
директива для направления входящего трафика SSL на ваш локальный сервер Node.js.
Например:
<VirtualHost *:443>
ServerName nodeapp.com
ServerAlias www.nodeapp.com app.nodeapp.com
ServerAdmin webmas@localhost
DocumentRoot /not/that/important
SSLEngine on
SSLCertificateFile /path/to/cert
SSLCertificateKeyFile /path/to/key
ProxyRequests off
ProxyPass "/" "http://127.0.0.1:3333/"
ProxyPassReverse "/" "http://127.0.0.1:3333/"
ErrorLog ${APACHE_LOG_DIR}/nodeapp_error.log
CustomLog ${APACHE_LOG_DIR}/nodeapp_access.log combined
</VirtualHost>