NGINX подстановочный знак подстановки в том же блоке сервера

Я не могу найти пример конкретного правила перезаписи, которое я пытаюсь выполнить.

Я хотел бы иметь правило перезаписи только для субдоменов, введенных, например.

https://sub.example.com/ -> https://example.com/directory1/directory2/sub

Из того, что я пробовал, это выглядит как самый близкий код, который я получил.

server_name example.com;

if ($host = *.example.com) 
    return 301 https://example.com/directory1/directory2/$1;   
}

1 ответ

Решение

Посмотрите на документы:


Это было бы одно решение:

server_name .example.com;
if ($host ~ ^(?<sub>.+)\.example\.com$) {
    return 301 http://example.com/directory1/directory2/$sub;
}

Это было бы другое решение:

server_name ~^(?<sub>.+)\.example\.com$;
return 301 http://example.com/directory1/directory2/$sub;

Какое решение лучше? Трудно сказать - это зависит от структуры трафика, который вы получаете, а также от того, какие другие серверы настроены на тот же дескриптор прослушивания.

Другие вопросы по тегам