本地主机上的nginx-通配符域和通配符子域

时间:2018-10-13 21:10:51

标签: nginx wildcard-subdomain nginx-config

我将nginx(和dnsmasq)配置为侦听example.test*.example.test通配符子域。一切似乎都正常。这是nginx.conf:

server {
    listen 80;
    server_name  ~(\.)?example\.test$;
...
}

现在,我想从磁盘上自己的目录中响应所有其他*.test域。我只是不知道如何实现,以下配置不起作用(只是禁用上面的配置):

server {
    listen 80;
    server_name \.test;
...
}

即使以下配置也具有相同的效果:

server {
    listen 80;
    server_name ~(?!(\.)?example)\.test;
...
}

这两个配置均可工作,但会禁用* .example.test和example.test配置,并对它们的响应方式与其他*.test域一样。


这是我的问题:

如何配置nginx响应*.test但以不同的方式响应example.test*.example.test

1 个答案:

答案 0 :(得分:0)

浪费了一整天后,我终于设法解决了这个问题。

对于那些可能会感到困惑的人,这里是解决方法:

# First server block for default configuration:
server {
    listen 80;
    server_name ~^[a-zA-Z0-9\-_]+\.test$; # matches domain names (e.g. anything.test)
...
}

server {
    listen 80;
    server_name  ~(\.)?example\.test$ example.test; # matches all subdomains (e.g. subdomain.example.test and sub.subdomain.example.test) as well as example.test
...
}