Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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

server {
  server_name example1.com example2.com example3.com;
  # ...
}

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
1  
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

2 Answers 2

up vote 3 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 {
  server_name www.exemple1.com www.example2.com www.exemple3.com;
  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. –  ultraviol3tlux May 13 '13 at 17:12

Your Answer

 
discard

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.