我可以将 HTTPS 流量从一个端口传递到另一个端口吗?

我可以将 HTTPS 流量从一个端口传递到另一个端口吗?

我正在proxy_pass在我的远程服务器上将端口 80 转发到 8000,然后将端口从 8000 转发到 80,从远程转发到我的本地主机。这很好用,但我还想用但似乎需要有效的证书才能传递流量。

有没有办法让我的远程服务器简单地将流量从端口 443 转发到 8443(然后我将远程 8443 转发到本地 443)。然后终止在我的开发机器上,而不需要到远程服务器上执行?

我的遥控器运行我的本地主机运行

答案1

虽然 nginx 可能有第三方模块来处理原始 TCP 连接,但我很确定默认情况下所有内容都必须是 HTTP 或终止 HTTPS。我认为在你的情况下我会在网络级别进行端口转发:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443

答案2

您可以让 nginx 处理 SSL 并转发到后端服务器上的端口 8000。这意味着 nginx 是 SSL 端点,并且 nginx 和后端之间没有 SSL。

答案3

最好的选择可能是按照@cperrin88 所说的去做。但是如果你真的不想在你的 nginx 上解密 https,你可以将其转发为 TCP 流量,然后在后端解密。

Nginx 默认不支持 TCP 代理,但是你可以使用此模块nginx_tcp_proxy_模块

答案4

如果您只是想传递 TCP 流量,HAProxy 是一个不错的选择。易于安装且配置简单。HAProxy 可以对 TCP 和 HTTP 流量进行负载平衡。

Ubuntu 上 HTTP 流量的记录应该可以开始使用了。将模式更改为 TCP,以对原始 TCP 进行负载平衡。

相关内容