Mass virtual hosting and global redirect

Igor Sysoev is at rambler-co.ru
Mon Jun 15 17:48:43 MSD 2009


On Mon, Jun 15, 2009 at 09:30:47AM -0400, NoSync wrote:

> Hello everyone! I recently switched my main webserver (where I host clients' websites) from apache to nginx and I wrote a custom generic configuration file to handle everything in one place, so domains and subdomains are handled on the fly by creating directories and subdirectories. Here's the relevant snippet:
> 
> server {
> 
>         listen                  80 default;
> 
>         if ($host ~* ^(.*)\.(.*\..*)$)  {
>         set $sub $1;
>         set $domain $2;
> }
> 
>         server_name             _;
>         server_name_in_redirect off;
>         root                    /var/www/vhosts/$domain/$sub;
>         access_log              /var/log/nginx/access.log combined;
>         error_log               /var/log/nginx/error.log error;
> 
>         include /etc/nginx/conf/wordpress_params;
> 
>   location / {
> 
>         root    /var/www/vhosts/$domain/$sub;
>         index   index.php index.html; 
> 
> Everything works just fine as nginx is a great product ;-) Now, my only problem lays in the fact I haven't been able to write a regexp to setup a global redirect from, eg, domain.com to www.domain.com. Could anyone help me on this?

Use server_name. Instead of

     if ($host ~* ^(.*)\.(.*\..*)$)  {
         set $sub $1;
         set $domain $2;
     }

you may write in 0.7.x

   server {
         listen 80 default;
         server_name ~^(.*)\.(.*\..*)$;
         set $sub $1;
         set $domain $2;

         ...
   }

As to the redirect:

   server {
         listen 80 default;
         server_name  _;
         rewrite   ^  http://www.$host$request_uri?;
   }

   server {
         listen 80 default;
         server_name  www.*;
         ...
   }


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list