Store part of subdomain in a variable to use as root

Martin Schut nginx at wommm.nl
Fri Aug 7 00:57:11 MSD 2009


On Thu, 06 Aug 2009 21:54:56 +0200, martinc6 <nginx-forum at nginx.us> wrote:

> martinc6 Wrote:
> -------------------------------------------------------
>> Igor Sysoev Wrote:
>> --------------------------------------------------
>> -----
>> > On Thu, Aug 06, 2009 at 02:24:53AM -0400,
>> martinc6
>> > wrote:
>> >
>> > > I need to store part of a subdomain in a
>> > variable in order to use it as my root and I
>> can't
>> > seem to get it to work.
>> > >
>> > > The URLs would be formed like:
>> > martin_branch.dev.testsite.com
>> > >
>> > > And I need root to be
>> > /home/martin/martin_branch.dev.testsite.com
>> > >
>> > > The underscore ("_") and stuff afterwards is
>> > optional. I'll also need
>> martin.dev.testsite.com
>> > to have its root as
>> > /home/martin/martin.dev.testsite.com.
>> > >
>> > > Note that the name ("martin") and home folder
>> > will vary.
>> > >
>> > > This is what I've got so far:
>> > >
>> > > server {
>> > >         listen   80;
>> > >         server_name
>> > ~^(.+)_*\.dev\.testsite\.com$;
>> > >         set $myroot $1;
>> > >         root /home/$myroot/$host;
>> > >  }
>> > >
>> > > Thanks in advance!
>> >
>> > What is in error_log ?
>> > BTW, "_" is invalid character in domain name.
>> >
>> > Also for this simple configuraiton you may omit
>> > "set" since $1 is never
>> > overwritten:
>> >
>> >  server {
>> >          listen   80;
>> >          server_name
>> > ~^(.+)_*\.dev\.testsite\.com$;
>> >          root /home/$1/$host;
>> >  }
>> >
>> >
>> > --
>> > Igor Sysoev
>> > http://sysoev.ru/en/
>>
>> The reason for the set is that we have other if
>> statements and rewrites but they shouldn't be
>> conflicting because they're the same as on other
>> subdomains we use. I commented it all out just in
>> case to test this.
>>
>> In there error logs I get
>> /home//martin.dev.testsite.com which means that
>> $myhost is empty so the regex isn't returning
>> anything.
>>
>> We're changing our format to
>> branch.martin.dev.testsite.com to be more valid.
>> I'm reworking the regex like so:
>> ^\.*(.+)\.dev\.testsite\.com.*$
>>
>> But it's not done yet clearly. In my regex tester
>> that returns the name I want but nginx doesn't
>> seem to do it.
>
>
> The regex we're using is: \.*([^.]+)[.]dev[.]testsite[.]com.*$
>
> But it doesn't seem to be returning anything to the server. Still get a  
> 404 and logs says it's looking for /home//martin.dev.testsite.com
>
> Posted at Nginx Forum:  
> http://forum.nginx.org/read.php?2,4750,4758#msg-4758
>
>
>

I think you need something like ^[^.]*\.([^.]*)\.dev\.testsite\.com$ or  
^.*\.(.*)\.dev\.testsite\.com$

Best regards,

Martin

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/





More information about the nginx mailing list