如何使用Nginx为不同的位置启用不同的SSL证书



假设我只有一个域名"example.com"。我想在访问时使用"A.crt"启用SSL证书https://example.com/api/A并在访问时使用"B.crt"https://example.com/api/B".如何使用Nginx配置实现这一点?谢谢。

为每个证书使用一个专用的服务器块,如下所示:

server {
listen 443 ssl;
server_name apiA; ...
ssl_certificate /etc/ssl/certs/A-ss.crt;
ssl_certificate_key /etc/ssl/private/A-ss.key;
ssl_client_certificate /etc/ssl/certs/A.crt;
ssl_verify_client on;
ssl_verify_depth 2; ...
location /api/A/ { ... }
}
server {
listen 443 ssl;
server_name apiB; ...
ssl_certificate /etc/ssl/certs/B-ss.crt;
ssl_certificate_key /etc/ssl/private/B-ss.key;
ssl_client_certificate /etc/ssl/certs/B.crt;
ssl_verify_client on;
ssl_verify_depth 2;  ...
location /api/B/ { ... }
}

其中每个TLS证书密钥对*-ss.crt*-ss.key属于它所服务的子域,如在其";通用名称";领域

此解决方案以使用子域为代价提供独立的TLS连接
发送URL指向不同主机名的请求,但使用代理或/etc/hosts(或curl中的--resolve选项(将其重定向到通用IP地址。

最新更新