2016-09-18 8 views
3

Я хочу сделать перенаправление на основе того, какой субдомен вводит пользователь.Как получить субдомен URL в NGINX

Например:

<subdomain>.example.com/admin -> <subdomain>.myurl.com

В идеале я хочу передать <subdomain> в качестве параметра моего перенаправления URL.

Я смотрел на что-то вдоль линий этого:

location ~ (sub).(somewhere).(com)/(some)(thing)/(something)(else) { 
    set $var1 = $1; # = sub in above example 
    set $var2 = $2; # = somewhere in above example 
    set $var3 = $3; # = com in above example 
    set $var4 = $4; # = some in above example 
    set $var5 = $5; # = thing in above example 
    set $var6 = $6; # = something in above example 
    set $var7 = $7; # = else in above example 
    rewrite^$1/$2 last; # would be sub/somewhere 
} 

основан на этом посту здесь: Manipulate or split string (я думаю, что синтаксис переменного набора неправильно в этом примере, но вы получите суть).

ответ

4

Часть доменного имени URL-адреса не проверяется директивой location. Вам нужно будет использовать именованный захват в директиве server_name. См. this document.

Например:

server { 
    server_name ~^(?<name>\w+)\.example\.com$; 

    location /admin { 
     return 301 $scheme://$name.myurl.com/; 
    } 
} 
+0

По звукам это, что я прошу не может быть возможным тогда. В идеале я хочу поместить его в серверный блок, который уже имеет имя server_name, а затем, если оно ' .example.com/admin -> .myurl.com', или если оно' .example.com/admin -> .myurl.com' Я могу жестко запрограммировать его для каждого, но мы запускаем несколько таких сайтов, где мы перенаправляем наш интерфейс взаимодействия на панель администратора, которая находится на URL-адресе API, поэтому было бы хорошо иметь общая конфигурация. – Stretch0

 Смежные вопросы

  • Нет связанных вопросов^_^