Eu sugeriria usar o VirtualHosts e automatizar a configuração
Você pode configurá-lo para que /var/www/<sname>
seja carregado automaticamente para qualquer <sname>.domain.com
Exemplo: ir para s1.domain.com
e s1.domain.com
carregará automaticamente /var/www/s1
e /var/www/s2
, respectivamente.
Nginx
A diretiva server_name
é simplesmente usada para corresponder uma solicitação ao site; você pode usar um regex:
server {
listen 80;
server_name ~^(www\.)?(?<sname>.+?).domain.com$;
root /var/www/$sname
...
}
Você pode usar $sname
em todo o restante da configuração
Apache
Isso é um pouco complicado, mas pode ser feito
LoadModule vhost_alias_module modules/mod_vhost_alias.so
UseCanonicalName Off
<VirtualHost *:80>
ServerName vhosts.fqdn
ServerAlias *.example.com
VirtualDocumentRoot /var/www/%1+
</VirtualHost>
Se você quiser usar HTTPS, tenho certeza de que há uma API para gerar certificados Letsencrypt