是否可以设置相同的端口用于 http 和 https?

是否可以设置相同的端口用于 http 和 https?

我有一个 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 结合,所以这是不可行的。

相关内容