我想知道如何让NginX(负载均衡器)接受443上的流量并将其转发到负载均衡的Web服务器节点上的端口443。
我使用NginX作为负载均衡器,其中SSL终止发生在NginX级别。然后NginX将未加密的流量发送到我的网络服务端口80。
这是我当前的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 load balance with upstream SSL
我真正的问题是,如果我希望NginX在443上监听流量,那么我需要在nignx上配置ssl终结点。否则nginx服务将无法启动,并会抱怨缺少ssl证书/密钥。
简而言之,我希望Nginx能够简单地接受443上的流量,并在负载均衡的Web服务器节点上将其转发到443。然后让我的网络服务器执行SSL工作。
最佳做法是在负载均衡器级别进行SSL卸载,但我想做其他事情。
感谢。
答案 0 :(得分:1)
答案 1 :(得分:1)
为此,您需要使用stream而不是http。
答案 2 :(得分:0)
可能,但是这需要一个额外的模块,即ngx_stream_ssl_preread_module,从Nginx 1.11.5开始可用。
它允许访问SNI,您可以通过该SNI通过ClientHello
变量提取在客户端$ssl_preread_server_name
消息中找到的服务器名称,前提是您可以将TCP(“流”)连接路由到另一个任命。缺点是只能依靠主机名进行路由。
该模块的文档提供了如何执行此操作的示例。