如何不在NginX load balacner终止ssl

如何不在NginX load balacner终止ssl,nginx,Nginx,我想知道如何让NginX(负载平衡器)接受443上的流量,并将其转发到负载平衡web服务器节点上的端口443 我使用NginX作为负载平衡器,其中SSL终止发生在NginX级别。然后NginX将未加密的流量发送到端口80的web服务 这是我当前的ngnx配置: upstream appserver { server 10.0.1.132; server 10.0.1.243; } server { listen 443 ssl; server_nam

我想知道如何让NginX(负载平衡器)接受443上的流量,并将其转发到负载平衡web服务器节点上的端口443

我使用NginX作为负载平衡器,其中SSL终止发生在NginX级别。然后NginX将未加密的流量发送到端口80的web服务

这是我当前的ngnx配置:

upstream appserver {
    server 10.0.1.132;
    server 10.0.1.243;
}

server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      /etc/nginx/cert.pem;
    ssl_certificate_key  /etc/nginx/cert.key;

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        proxy_pass http://appserver;
    }
}
我经历过:

我真正的问题是,如果我想让NginX监听443上的流量,那么我需要在nignx上配置ssl终端。否则nginx服务将无法启动,并将投诉缺少ssl证书/密钥

简而言之,我希望Nginx只接受443上的流量,并将其转发到负载平衡的Web服务器节点上的443。然后让我的Web服务器完成SSL工作

最好的做法是在负载平衡器级别进行SSL卸载,但我不想这样做


谢谢。

这需要NGINX部分的第4层窥探/路由,而这显然不是。NGINX似乎支持SNI,但出于某种原因,我无法阻止它终止TLS连接


我最终使用了HAProxy。

为此,您需要使用它而不是http。

这是可能的,但这需要一个额外的模块,即从Nginx 1.11.5开始提供

它允许访问SNI,您可以通过
$ssl\u preread\u server\u name
变量提取客户端
ClientHello
消息中的服务器名称,因为您可以将TCP(“流”)连接路由到另一个enpoint。缺点是您只能依靠主机名进行路由


该模块的文档提供了一个如何执行此操作的示例。

您所问的问题称为MITM攻击:这正是SSL/TLS所阻止的。同意。那么,这是否意味着,如果要使用负载平衡器(任何负载平衡器本身,而不仅仅是NginX),他必须在负载平衡器级别配置SSL终端?我想特别谈谈答案,建议在哪里也使用后端SSL。我的要求不像PCI的人要求的那么难。我只是想了解整个概念。如果您想使用像nginx这样的第7层负载平衡器,那么需要取消加密连接才能访问请求,并且您必须在nginx.conf中指定密钥/证书。之后,它可以在发送到后端之前再次加密(使用
proxy\u-pass)https://appserver
)。另一种方法是使用L4平衡器之一在TCP层上平衡TLS。Ok。谢谢你的解释。