在 Nginx 中根据客户端 IP 更改提供的 SSL 证书

在 Nginx 中根据客户端 IP 更改提供的 SSL 证书

我有两个 SSL 证书,foo.crtbar.crt。两个证书使用相同的密钥。foo.key我希望我的 Nginxfoo.crt在客户端 IP 匹配时发送 SSL 证书192.168.1.0/24,而bar.crt在不匹配时发送。

我尝试使用 Geo 模块和if指令,如下所示:

geo $local {
    default 0;
    192.168.1.0/24 1;
}
...
server {
    ssl_certificate bar.crt;
    ssl_certificate_key foo.key;
    if ($local) {
        ssl_certificate foo.crt;
    }
    ...
}

但是,Nginx 给出了错误"ssl_certificate" directive is not allowed here

有没有不用指令就能做到这一点的方法if

答案1

也许是这样的(未经测试):

geo $cert {
    default bar.crt;
    192.168.1.0/24 foo.crt;
}
...
server {
    ssl_certificate $cert;
    ssl_certificate_key foo.key;
    ...
}

相关内容