我需要使用两个不同的ssl证书,nginx指向同一个应用程序。
https://domain1.com指向1.1.1.1
https://domain2.com指向1.1.1.1
。
。
。
。
https://domainN.com指向1.1.1.1
尝试以下方法:
deleteAllFromObject(Dog())
这不起作用,它只是加载第一个证书,当使用第二个域访问时导致无效证书。
域名证书无法合并。 我不能为nginx旋转两个不同的实例,因为案例需要帮助我指出n-Domains指向同一个IP,最好使用一个nginx服务器。
有出路吗?
答案 0 :(得分:1)
感谢Richard Smith指出正确的东西!
因此,要设置nginx为指向同一nginx的域使用不同的证书密钥对,我们必须依赖TLS-SNI(服务器名称指示),其中域名作为未加密文本的一部分发送握手。这有助于nginx决定将哪个证书密钥对用于传入的安全请求。
有关SNI here的更多内容。
继续进行配置。
server {
listen 80;
server_name domain1.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name domain1.com;
root /app/dist;
index index.html;
ssl_certificate /etc/nginx/ssl/d1/certificate.crt;
ssl_certificate_key /etc/nginx/ssl/d1/private.key;
location / {
try_files $uri $uri/ /index.html;
}
}
server {
listen 80;
server_name domain2.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name domain2.com;
root /app/dist;
index index.html;
ssl_certificate /etc/nginx/ssl/d2/certificate.crt;
ssl_certificate_key /etc/nginx/ssl/d2/private.key;
location / {
try_files $uri $uri/ /index.html;
}
}
上面的配置将domain1和domain2的HTTP(80)转发到相应的HTTPS(443)服务器块,其中加载了相应的证书密钥对。
HTTPS(443)请求直接处理
nginx通过使用SNI选择服务器名称来决定要击中哪个块。