SSL - 同一 Amazon EC2 实例上的 Apache 和 Node.js

SSL - 同一 Amazon EC2 实例上的 Apache 和 Node.js

我使用 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>

相关内容