shop.example.com est une adresse à part qui doit exister en trois endroits. Lequel manque se lit facilement au symptôme, et chacun a son propre remède.

1. Le DNS

dig +short shop.example.com
# nothing at all: the record does not exist

Un enregistrement A pointant sur le serveur, ou un CNAME vers un nom d'hôte qui en a un. S'il manque, le navigateur dit que le serveur est introuvable : la requête ne quitte jamais la machine.

2. Le bloc serveur

server {
    listen 443 ssl;
    server_name shop.example.com;
    root /var/www/shop/public;
}

Le DNS en place et aucun server_name correspondant, la requête arrive et Nginx sert ce qu'il considère comme le site par défaut. C'est le symptôme où un sous-domaine affiche le site principal à la place - et cela veut dire que le DNS fonctionne.

3. Le certificat

sudo certbot --nginx -d shop.example.com

Les deux premiers bons et pas de certificat pour ce nom, le navigateur avertit avant de charger quoi que ce soit. Le nom doit figurer sur le certificat ; un certificat pour example.com ne couvre pas shop.example.com.

Où vont les fichiers

  • Son propre répertoire - /var/www/shop/public. Propre, et la forme recommandée.
  • Un répertoire à l'intérieur du site principal - possible, et cela veut dire que le site principal peut servir les mêmes fichiers à une seconde adresse si vous ne l'en empêchez pas.
Si la racine du sous-domaine se trouve dans la racine du site principal, les deux adresses la servent. Déplacez-la à l'extérieur, ou interdisez ce chemin dans le bloc serveur principal - sinon vous avez du contenu dupliqué et un site de préproduction que les moteurs peuvent trouver.

Les jokers

Pour de nombreux sous-domaines, un enregistrement joker et un certificat joker demandent moins de travail - voyez les sous-domaines joker.