server_name

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

server_name

Gregory Edigarov
Добрый день,

имеется конфиг :
server {
listen 80;

server_name ~^(.*).site.com$;
location / {
add_before_body /Header.html;
add_after_body /Footer.html;
autoindex on;
autoindex_exact_size off;
try_files /subdoms/$1 @fallback;
}
location @fallback {
root /site.com/;
}
}

из логов видно, что по какой-то причине регулярка в server_name никогда
не матчит, как следствие по любым именам оно уходит на fallback.

подскажите, как правильно написать данную регулярку.

спасибо.
--
With best regards,
Gregory Edigarov

_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx
Reply | Threaded
Open this post in threaded view
|

Re: server_name

Anton Yuzhaninov
On 11/20/12 15:00, Gregory Edigarov wrote:
>
>
> server_name ~^(.*).site.com$;

Точка это метасимвол, и её нужно экранировать:

server_name ~^(.*)\.site\.com$;

И удобнее использовать named captures:

server_name ~^(?<subdom>.*)\.site\.com$;
...
try_files /subdoms/$subdom @fallback;

--
  Anton Yuzhaninov

_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx
Reply | Threaded
Open this post in threaded view
|

Re: server_name

Gregory Edigarov
On 11/20/2012 01:09 PM, Anton Yuzhaninov wrote:
On 11/20/12 15:00, Gregory Edigarov wrote:


server_name ~^(.*).site.com$;

Точка это метасимвол, и её нужно экранировать:

server_name ~^(.*)\.site\.com$;

И удобнее использовать named captures:

server_name ~^(?<subdom>.*)\.site\.com$;
...
try_files /subdoms/$subdom @fallback;

написал, но почему-то не работает.
все уходит на fallback.
/subdoms/$subdom - сами по себе являются подкаталогами, может это быть причиной?

_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx
Reply | Threaded
Open this post in threaded view
|

Re: server_name

Anton Yuzhaninov
On 11/20/12 15:31, Gregory Edigarov wrote:
>>
>> try_files /subdoms/$subdom @fallback;
>>
> написал, но почему-то не работает.
> все уходит на fallback.
> /subdoms/$subdom - сами по себе являются подкаталогами, может это быть причиной?

что касается try_file наверно как то так:

root /subdoms/$subdom;
...
try_file $uri $uri/ @fallback;

--
  Anton Yuzhaninov

_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx
Reply | Threaded
Open this post in threaded view
|

Re: server_name

Gregory Edigarov
On 11/20/2012 01:35 PM, Anton Yuzhaninov wrote:

> On 11/20/12 15:31, Gregory Edigarov wrote:
>>>
>>> try_files /subdoms/$subdom @fallback;
>>>
>> написал, но почему-то не работает.
>> все уходит на fallback.
>> /subdoms/$subdom - сами по себе являются подкаталогами, может это
>> быть причиной?
>
> что касается try_file наверно как то так:
>
> root /subdoms/$subdom;
> ...
> try_file $uri $uri/ @fallback;
>
все-равно не хочет. походу $subdom таки  пустой. но почему????

_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx
Reply | Threaded
Open this post in threaded view
|

Re: server_name

Gregory Edigarov
On 11/20/2012 01:46 PM, Gregory Edigarov wrote:

> On 11/20/2012 01:35 PM, Anton Yuzhaninov wrote:
>> On 11/20/12 15:31, Gregory Edigarov wrote:
>>>>
>>>> try_files /subdoms/$subdom @fallback;
>>>>
>>> написал, но почему-то не работает.
>>> все уходит на fallback.
>>> /subdoms/$subdom - сами по себе являются подкаталогами, может это
>>> быть причиной?
>>
>> что касается try_file наверно как то так:
>>
>> root /subdoms/$subdom;
>> ...
>> try_file $uri $uri/ @fallback;
>>
> все-равно не хочет. походу $subdom таки  пустой. но почему????
в структуре /subdoms/$subdom - 100% существует и является подкаталогом

_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx
Reply | Threaded
Open this post in threaded view
|

Re: server_name

Ruslan Ermilov
On Tue, Nov 20, 2012 at 01:48:59PM +0200, Gregory Edigarov wrote:

> On 11/20/2012 01:46 PM, Gregory Edigarov wrote:
> > On 11/20/2012 01:35 PM, Anton Yuzhaninov wrote:
> >> On 11/20/12 15:31, Gregory Edigarov wrote:
> >>>>
> >>>> try_files /subdoms/$subdom @fallback;
> >>>>
> >>> написал, но почему-то не работает.
> >>> все уходит на fallback.
> >>> /subdoms/$subdom - сами по себе являются подкаталогами, может это
> >>> быть причиной?
> >>
> >> что касается try_file наверно как то так:
> >>
> >> root /subdoms/$subdom;
> >> ...
> >> try_file $uri $uri/ @fallback;
> >>
> > все-равно не хочет. походу $subdom таки  пустой. но почему????
> в структуре /subdoms/$subdom - 100% существует и является подкаталогом

В варианте root /subdoms/$subdom каталог /subdoms/$subdom должен
существовать от корня файловой системы.  Он точно у вас там есть?

Оригинальный "try_files /subdoms/$subdom" как бы намекает, что нет,
т.к. try_files ищет относительно root, который у вас не указан, и
не факт что равен /.

Если сделать правильно, то должно работать:

server {
server_name ~^(.*).example.com$;
location / {
root /tmp/foo/subdoms/$1;
try_files $uri $uri/ =404;
}

$ grep ^ /tmp/foo/subdoms/test*/*
/tmp/foo/subdoms/test1/foo:foo
/tmp/foo/subdoms/test1/index.html:this is test1
/tmp/foo/subdoms/test2/index.html:this is test2
$ curl http://test1.example.com:8000/
this is test1
$ curl http://test2.example.com:8000/
this is test2
$ curl http://test1.example.com:8000/foo
foo

(Разумеется в такой конструкции лучше, чтобы такой сервер не был
сервером по умолчанию для данного порта.)

_______________________________________________
nginx mailing list
[hidden email]
http://mailman.nginx.org/mailman/listinfo/nginx