我读过这篇文章http://bneijt.nl/blog/post/name-based-virtual-hosting-with-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;
}
}
问题:
输入可以www.aa.com
,输入aa.com
不可以,域名解析可以,是什么问题?
答案1
您有 2 个选择:
1. 为 example.net 创建单独的虚拟主机并进行重定向
server {
listen *:80;
server_name example.net;
return 301 http://www.example.net;
}
server {
listen *:80;
server_name ~^((?<subdomain>.*)\.)example\.net$;
location / {
root /vhosts/${subdomain}.example.net/public_html;
index index.html index.htm;
}
}
2. 修复正则表达式
服务器名称 ~^((?<子域>.*)\.)?example\.net$
?
我在示例的开头添加了符号