web-dev-qa-db-fra.com

Plusieurs vhosts SSL utilisant un certificat Wildcard à Nginx

J'ai deux noms d'hôte partageant le même nom de domaine que je souhaite servir sur https. J'ai un certificat WildCard-SSL et j'ai créé deux configurations Vhost:

hôte 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;

hôte 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;

Cependant, je reçois le même Vhost servi pour le nom d'hôte.

14
vincent.io

Vous devez diviser les Vhosts de la partie SSL d'écoute/de configuration:

Partie d'écoute:

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;
}

Et maintenant 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;
}
17
Teftin

Il est effectivement expliqué dans le manuel: http://nginx.org/en/docs/http/configuring_htttps_servers.html#certificate_with_several_names

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;
}

Maintenant, si vous avez de nombreux sites, je vous suggère de stocker tous dans un dossier avec uniquement la partie Server {} comme ci-dessus dans des fichiers uniques et une directive Inclure dans le fichier principal pour les charger:

ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
include /etc/nginx/conf.d/subfolder/*;
13
BxlSofty