Re: Суб домены на разных server..

Maxim Dounin mdounin at mdounin.ru
Wed Mar 5 16:18:38 UTC 2014


Hello!

On Wed, Mar 05, 2014 at 10:37:29AM -0500, den68 wrote:

> Помогите с решением казалось-бы тривиальной задачи.
> Требуется чтоб домены типа *.abc.ru уходили на первый сервер, а домены
> home.*.abc.ru на второй, причем на втором должен быть proxy_pass, то есть
> редирект если я правильно понимаю не очень подходит, туда данные GET'ом
> передаются..
> 
> 1.
> server {
>         server_name
>             abc.ru
>             *.abc.ru;
> ....
> 
> 2.
> server {
>         server_name
>             home.*.abc.ru; /знаю, так писать в реалии нельзя.. для
> наглядности../
>             proxy_pass http://127.0.0.1:998877/;
> 
> Пробовал различные варианты с PCRE - результатом не увенчалось:
> 
> #~^home.*\.abc\.ru$;
> #server_name "^~home\.(?<domain>.+)$";
> #server_name "~^(home\.)?(?<domain>.+)$";
> #server_name "~^(home\.)?(.+)$";
> #server_name "~^home\.(?P<domain>.*)$";
> 
> ..
> ка правильно-то ?

Если в конфиге есть server_name *.abc.ru, то регулярные выражения 
к соответствующим именам применяться не будут, см. документацию:

http://nginx.org/r/server_name/ru

Если нужно, чтобы home.*.abc.ru и *.abc.ru обрабатывались в разных 
блоках server{}, то надо переписать конфиг как-то так:

    server {
        server_name ~^home\..+\.abc\.ru$;
        ...
    }
    server {
        server_name ~.+\.abc\.ru$;
        ...
    }

Обращаю внимание, что порядок следования блоков server{} - важен, 
используется первое совпавшее регулярное выражение.

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru