2016-04-12 2 views
2

я прочитал эту статью http://bneijt.nl/blog/post/name-based-virtual-hosting-with-nginx/
и выдержки являются следующим:Nginx: пустой субдомен не может работать

server { 
    server_name ~^((?<subdomain>.*)\.)?(?<domain>[^.]+)\.(?<tld>[^.]+)$; 
    if ($subdomain = "") { 
     set $subdomain "_"; 
    } 
    location/{ 
     index index.html; 
     root /srv/http/vhost/${domain}.${tld}/${subdomain}; 
    } 
} 

Я имитирую его и написать мою конфигурацию, как это:

server { 
    server_name ~^((?<subdomain>.*)\.)aa\.com$; 
    if ($subdomain = "") { 
     set $subdomain "www"; 
    } 

    location/{ 
     root /var/www/${subdomain}.aa.com/public; 
     index index.html index.htm; 
    } 
} 

любой подобласть соответствует в его папку, например:

domain name folder 
111.aa.com  /var/www/111.aa.com 
222.aa.com  /var/www/222.aa.com 

Вопрос:
Если вход www.aa.com, он работает, но вход aa.com, он не может работать, разрешение имени домена в порядке, в чем проблема?

ответ

1

Попробуйте это:

server { 
    server_name ~^((?<subdomain>.*)\.)aa\.com$ aa.com; 

     if ($host ~ aa.com) { 
      set $subdomain "www"; 
     } 

    location/{ 
     root /var/www/${subdomain}.aa.com/public; 
     index index.html index.htm; 
    } 
} 

, но я предпочитаю это:

# redirect user to www.aa.com if user went to aa.com 
server { 
    server_name aa.com; 
    return 301 $scheme://www.aa.com$request_uri; 
} 

# handle subdomain part 
server { 
    server_name ~^((?<subdomain>.*)\.)aa\.com$; 

    location/{ 
     root /var/www/${subdomain}.aa.com/public; 
     index index.html index.htm; 
    } 
} 
Смежные вопросы