Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a server config in nginx which matches several domains:

server {
  # ...

And I would like to redirect the www versions to the corresponding domains. I know how to do it for a single domain with a redirect and I would know how to do the inverse thing but I can't find a way here.

Any idea ?

Thanks ! :)

share|improve this question
Be very careful. You probably want to do the opposite. Especially if you ever have aspirations of your sites being large. – Michael Hampton May 13 '13 at 15:34
I know that but sadly it's not my call :( Thanks for the link though :) – Happynoff May 15 '13 at 9:19
up vote 4 down vote accepted

Don't use if

server {
    server_name ~^(www\.)?(?<domain>.+)$;
    return 301 $scheme://$domain$request_uri;    

That's all ...

share|improve this answer
Wow, I didn't know it was possible to do that oO Thanks ! – Happynoff May 15 '13 at 9:18

Ok I found this solution:

server {
  listen 80;

  if ($http_host ~ "www.(.*)") {
    return 301 $scheme://$1$request_uri;

It works like a charm :)

share|improve this answer
I would actually set up separate server blocks for each domain name. Using IF is generally bad and really non-performant with NGINX. – yaycmyk May 13 '13 at 17:12

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.