Dado que o ponto crucial da sua questão está basicamente relacionado ao acesso a sites criados recentemente por usuários de seu site que foi projetado para permitir isso, você precisaria criar hosts virtuais para cada site criado (caso contrário seu servidor web teria nenhuma maneira de determinar qual site processar pedidos).
Você poderia criar automaticamente vhosts com base em um modelo e recarregar a configuração do nginx, mas eu não recomendaria isso - geralmente acho que esse nível de automação é indesejável e que você deve realmente cuidar das configurações individuais do site em uma base por usuário.
Você também precisaria criar um registro CNAME curinga apropriado de acordo com este artigo em seu DNS.
Editar: de acordo com os comentários abaixo, aqui está uma sugestão sobre o que você poderia implementar.
Você poderia, por exemplo, ter um arquivo de host virtual de modelo, contendo algo semelhante ao seguinte:
server {
listen 80;
listen 443 ssl;
server_name template.yourdomain.com;
access_log /var/log/nginx/template.yourdomain.com_access.log main;
error_log /var/log/nginx/template.yourdomain.com_error.log warn;
}
Que você poderia então replicar alterando as entradas de 'modelo' com o subdomínio da escolha do usuário. Depende do resto do seu ambiente, mas, por exemplo, você pode ter um campo de texto para permitir que ele insira o subdomínio desejado, e então fazer com que a ação 'enviar' (ou similar) acione um script criado para alterar a configuração acima arquivo para um apropriado para eles, copiando-o para theirdomain.yourdomain.com.conf e, em seguida, executando service nginx reload
.
Esta é apenas uma vaga ideia do que você precisa fazer - os detalhes são feitos por você com base em seu ambiente e requisitos.
Como já disse, no entanto, você deve considerar as implicações de implementar isso.