Store part of subdomain in a variable to use as root

martinc6 nginx-forum at nginx.us
Thu Aug 6 23:54:56 MSD 2009


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






More information about the nginx mailing list