Nginx - получить поддомен как переменную - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть пара поддоменов с одинаковым поведением (на основе имени поддоменов), и я пытаюсь найти лучшее решение с меньшими издержками для сервера nginx.В этом домене также есть домены по умолчанию www и non-www, а также подстановочный знак (эти «пара» поддоменов не должны совпадать с подстановочным знаком).

На данный момент я нашел 3 возможных решения:

  1. определить каждый поддомен в отдельном блоке сервера и жестко закодировать поддомен

    server {
        server_name one.domain;
        # config with "one"
    }
    server {
        server_name two.domain;
        # same config with "two"
    }
    ... three, four etc.
    

это должно быть в порядке, но это не СУХОЙ (не повторятьсебя) тоже долго и выглядит некрасиво

перехватывать имя_сервера в регулярном выражении

server {
    server_name  ~^(?<subdomain>one|two|three|...)\.domain\.com$;
    # config with $subdomain
}

конфигурация чище, но есть издержки регулярного выражения, также может взаимодействовать с виртуальным хостом с подстановочными знаками, я неуверен, что будет иметь приоритет

статическое имя хоста плюс карта

server {
    server_name one.domain two.domain three.domain ....;
    # config with $subdomain, where $subdomain is a map based on $server_name, extracting all characters before .
}

это должен быть лучший подход, выбор vhost основан на сравнении строк (без регулярного выражения), но я все еще использую регулярное выражениев этой «карте»

Вопрос в том, можно ли улучшить третье решение?

Как при извлечении части строки (т. е. $ subdomain из $ server_name) без использования регулярного выражения?

Все субдомены находятся на одном уровне, и все заканчиваются на .domain

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...