shop.example.com es una dirección aparte que tiene que existir en tres sitios. Cuál falta se sabe fácilmente por el síntoma, y cada una tiene un remedio distinto.

1. El DNS

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

Un registro A que apunte al servidor, o un CNAME a un nombre de host que lo tenga. Si falta, el navegador dice que no encuentra el servidor: la petición ni siquiera sale de la máquina.

2. El bloque de servidor

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

Con el DNS puesto y sin un server_name que case, la petición llega y Nginx sirve lo que considere el sitio por defecto. Ese es el síntoma en el que un subdominio muestra el sitio principal en su lugar, y significa que el DNS funciona.

3. El certificado

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

Con los dos primeros bien y sin certificado para ese nombre, el navegador avisa antes de cargar nada. El nombre tiene que estar en el certificado; un certificado para example.com no cubre shop.example.com.

Dónde van los archivos

  • Su propio directorio: /var/www/shop/public. Limpio, y la forma recomendada.
  • Un directorio dentro del sitio principal: posible, y significa que el sitio principal puede servir los mismos archivos en una segunda dirección si no lo impide.
Si la raíz del subdominio queda dentro de la raíz de documentos principal, las dos direcciones la sirven. O la mueve fuera, o deniega esa ruta en el bloque de servidor principal; si no, tiene contenido duplicado y un sitio de pruebas que los buscadores pueden encontrar.

Los comodines

Para muchos subdominios, un registro comodín y un certificado comodín dan menos trabajo: vea subdominios comodín.