我将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
?
答案 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
...
}