Vários vhosts SSL usando o certificado curinga no nginx

12

Eu tenho dois nomes de host compartilhando o mesmo nome de domínio que desejo veicular em HTTPs. Eu tenho um certificado SSL wildcard e criei duas configurações vhost:

Anfitrião A

listen      127.0.0.1:443 ssl;
server_name     a.example.com;
root        /data/httpd/a.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;

Host B

listen      127.0.0.1:443 ssl;
server_name     b.example.com;
root        /data/httpd/b.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;

No entanto, recebo o mesmo vhost servido para o nome do host.

    
por vincent.io 27.10.2013 / 12:36

2 respostas

17

Você precisa dividir vhosts da parte ssl listening / configuration:

Parte de escuta:

server {
  listen              127.0.0.1:443 default_server ssl;
  server_name         _;
  ssl_certificate     /etc/ssl/wildcard.cer;
  ssl_certificate_key /etc/ssl/wildcard.key;
}

E agora vhosts:

server {
  listen      127.0.0.1:443;
  server_name a.example.com;
  root        /data/httpd/a.example.com;
}

server {
  listen      127.0.0.1:443;
  server_name b.example.com;
  root        /data/httpd/b.example.com;
}
    
por 27.10.2013 / 13:25
11

Na verdade, é explicado no manual: link

ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
server {
  listen      443 ssl;
  server_name a.example.com;
  root        /data/httpd/a.example.com;
}
server {
  listen      443 ssl;
  server_name b.example.com;
  root        /data/httpd/b.example.com;
}

Agora, se você tiver muitos sites, sugiro que armazene todos eles em uma pasta com apenas a parte {} do servidor, como em arquivos únicos, e uma diretiva include no arquivo principal para carregar todos eles:

ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
include /etc/nginx/conf.d/subfolder/*;
    
por 10.06.2014 / 06:04