【问题标题】:nginx on localhost - wildcard domains and wildcard subdomains本地主机上的 nginx - 通配符域和通配符子域
【发布时间】:2019-03-18 17:41:58
【问题描述】:

我将 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?

【问题讨论】:

    标签: nginx wildcard-subdomain nginx-config


    【解决方案1】:

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

    对于那些可能会发现自己处于这种混乱情况的人,这里是解决方案:

    # 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
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 2020-11-20
      • 2010-10-15
      相关资源
      最近更新 更多