# Converting Apache configs to nginx, why is a NameVirtualHost workalike is a bad thing?

**URL:** <https://www.ruby-forum.com/t/converting-apache-configs-to-nginx-why-is-a-namevirtualhost-workalike-is-a-bad-thing/229899>\
**Category:** NGINX\
**Created:** [February 12, 2013, 3:18am UTC](https://www.ruby-forum.com/t/converting-apache-configs-to-nginx-why-is-a-namevirtualhost-workalike-is-a-bad-thing/229899 "2013-02-12T03:18:40Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![limeyd](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/b782af/32.png) [@limeyd](https://www.ruby-forum.com/u/limeyd)\
**Post date:** [February 12, 2013, 3:18am UTC](https://www.ruby-forum.com/t/converting-apache-configs-to-nginx-why-is-a-namevirtualhost-workalike-is-a-bad-thing/229899/1 "2013-02-12T03:18:40Z")

</div>

I’m switching some servers from Apache 2.2.x to nginx 1.2.6. In Apache,  
I use NameVirtualHost. I also use Rewrite directives to manage www.  
prefixing via a 301 redirect. All the user has to is create  
/wwwroot/$hostname, upload the site files, and point DNS at my server.  
On my end, all I have to do is create the Apache config once as part of  
the new-user setup.

When I converted that to nginx, this is what I came up with:

root /www/user/wwwroot/$http\_host;

For the user who wants to drop the www.:

if ($http\_host ~ ^www.(.+)$) {  
return 301 http://$1$request\_uri;  
}

For the user who wants to always have the www.:

if ($http\_host !~ ^www.) {  
return 301 http://www.$http\_host$request\_uri;  
}

Which, in testing, works a treat. Various articles say this style of  
configuration is bad. Instead I should:

1. have per-domain server blocks;
2. have a server block for [www.example.com](http://www.example.com) that redirects to  
[example.com](http://example.com). or vice versa.

In other words, for the user who has 37 domains, I’ll need 74 server  
blocks in their nginx config. That’s a significant regression in terms  
of workload and simplicity.

If it’s bad, ok, I won’t do that; however, I can’t seem to find an  
explaination _why_ it’s bad. Would someone please clarify that point?
