nginx:空子域名无法工作

nginx:空子域名无法工作

我读过这篇文章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$

?我在示例的开头添加了符号

相关内容