如何使用 nginx 处理多个 ssl 服务器

Abd*_*l31 6 ssl https http nginx server

我有 2 个 SSL 网络服务器,我必须使用 nginx 来处理它们。我还有一个 http 服务器(重定向工作正常)。

当我只处理 http 和 https(只有一个 ssl 网络服务器)时,重定向效果很好。

问题是,当我想处理 2 个 ssl 网络服务器时:

na.test.lan 表示 https nnm.toast.lan 表示 https

https 请求由第一个服务器块文件处理,该文件将我重定向到错误的 ssl Web 服务器(可能是侦听端口 443 的第一个服务器块)。

这是我的 ssl.conf :

server {
    listen       443;
    server_name  na.test.lan ;

    ssl                  on;
    ssl_certificate      /etc/pki/nginx/server.crt;
    ssl_certificate_key  /etc/pki/nginx/server.key;

    ssl_session_timeout  1m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers   on;

    location / {
        proxy_pass https://172.17.100.200/; }
}
 server {
    listen       443;
    server_name  nnm.toast.lan ;   

    ssl                  on;
    ssl_certificate      /etc/pki/nginx/server.crt;
    ssl_certificate_key  /etc/pki/nginx/server.key;

    ssl_session_timeout  1m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers   on;

    location / {
        proxy_pass https://179.60.192.3/; }
}
Run Code Online (Sandbox Code Playgroud)

Sud*_*ead -2

您应该为每个 SSL 服务器使用不同的 IP 地址。这是SSL协议的本质,SSL握手必须在建立连接的过程中完成,因此服务器必须选择SSL证书发送给客户端。但此时它对 Host: 标头一无所知,因此它只是选择第一个。

更新:或使用 SNI http://nginx.org/en/docs/http/configuring_https_servers.html#sni