Store part of subdomain in a variable to use as root
martinc6
nginx-forum at nginx.us
Thu Aug 6 23:09:02 MSD 2009
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.
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,4750,4757#msg-4757
More information about the nginx
mailing list