我使用 Apache 在 EC2 实例上托管了我的网站。SSL 也已正确设置,在 HTTPS、端口 443 上运行。
目前,我刚刚使用 Node.js + socket.io 向网站添加了一个聊天应用程序。Node.js 服务器监听端口 3333。
如何在同一个实例上运行使用 SSL 保护的两个服务器(Apache 和 Node.js)?Amazon EC2 不允许我为 HTTPS 打开另一个端口。它只允许 443 用于 HTTPS。
答案1
您无需为任何东西打开额外的端口。您只需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>