Простое размещение одного за другим не превратит их в альтернативы - это будет просто последовательность. Вы позволяете серию символов слова, а затем тире. Например subdom-.example.com
.
Вам необходимо явно пометить эти классы как альтернативы, например, (\w|-)
или [\w-]
.
server_name "~^(?<subdomain>(\w|-)+)\.parentdomain\.com$"; server_name "~^(?<subdomain>[\w-]+)\.parentdomain\.com$";
(Подумайте об этом: если PCRE автоматически превратит все в альтернативы, то наличие слова «родительский домен» в регулярном выражении фактически не разрешит «родительский домен» - это разрешит либо «p», либо «a», либо «r», либо «e». " или же...)