我有一个 nodejs 应用程序,其端口号为 3001,该应用程序可以使用 http,但不能使用 https。在 apache 服务器上,将 80 或 443 的反向代理设置为 5001,并将 3001 的反向代理也设置为。
http://<domain>:3001/socket.io/socket.js ---> Work
https://<domain>:3001/socket.io/socket.js ---> Not Work(Secure Connection Failed or This site can’t be reached)
这里我需要知道相同的端口(3001)是否适用于 http 和 https?
有什么解决办法吗?
答案1
HTTP 协议允许使用 STARTTLS - 请参阅RFC 2817 它允许客户端通过明文 HTTP 协议进行连接,然后将现有的 TCP 连接升级到 TLS。
因此,理论上,您可以在同一端口上运行 HTTP 并支持“HTTPS”,但据我所知,实际上没有人使用这种方法。但对 RFC 2817 的支持是Apache httpd 上通过SSLEngine optional
指示。
使用 HTTPS URI 要求在启动 HTTP 协议之前建立 TLS 连接,而该协议不与 STARTTLS 结合,所以这是不可行的。