Nginx Subdomains Gotcha

July 18, 2009

I was trying to set up a subdomain, photos.kylebanker.com, using nginx. No problems, until I realized that *.kylebanker.com (e.g., whatever.kylebanker.com) was resolving to the content at photos.kylebanker.com. Here’s my initial configuration. Do you see the what’s wrong?

   1  
   2  # Redirect all requests containing 'www.kylebanker.com' 
   3  # to 'kylebanker.com' 
   4  server {
   5      listen 80;
   6      server_name  www.kylebanker.com;
   7      rewrite ^(.*) http://kylebanker.com$1 permanent;
   8  }
   9  
  10  # Listen for kylebanker.com
  11  server {
  12          listen   80;
  13          server_name  kylebanker.com;
  14  
  15          access_log  /var/log/nginx/blog.access.log;
  16  
  17          location / { 
  18                  root   /home/blog/public; 
  19                  index  index.html index.htm; 
  20          } 
  21  }
  22  
  23  # Listen for photos.kylebanker.com
  24  server {
  25          listen   80;
  26          server_name  photos.kylebanker.com;
  27  
  28          access_log  /var/log/nginx/photos.access.log;
  29  
  30          location / { 
  31                  root   /home/photos/public; 
  32                  index  index.html index.htm; 
  33          } 
  34  }
  35  

Turns out that I needed to add a wildcard alias. Line 6 should read as follows:

        server_name  kylebanker.com *.kylebanker.com;

Was this simply too obvious to be documented elsewhere?

funky dingbat