如何不在NginX load balacner终止ssl
我想知道如何让NginX(负载平衡器)接受443上的流量,并将其转发到负载平衡web服务器节点上的端口443 我使用NginX作为负载平衡器,其中SSL终止发生在NginX级别。然后NginX将未加密的流量发送到端口80的web服务 这是我当前的ngnx配置:如何不在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
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。谢谢你的解释。