如何在 NGINX 中配置通配符子域名和一些固定名称?

如何在 NGINX 中配置通配符子域名和一些固定名称?

我有example.com以下用例:

  • 仅限 SSL
  • www. 将被重定向到 example.com(没有 www.)
  • example.com 将反向代理到 :3000
  • fix1.example.com 将反向代理到 :3001
  • fix2.example.com 将反向代理到 :3002
  • ...
  • *.example.com 将反向代理到 :4000
  • *.example.com/admin 将反向代理到 :5000
    • example.com/admin、fix1.example.com、fix2.example.com,... 没有 /admin,并且不能反向代理到 :5000

在我当前的配置中,我的 sites-available / sites-enabled 中有以下文件:

  • 示例网站
  • fix1.example.com
  • fix2.example.com
  • ...
  • wild.example.com

由于没有其他文件,每个文件都配置了自己的部分。但我最终得到了重复或冲突的配置,所以我在想,在一个文件中一定有一个更好的方法,可以处理包含所有用例的整个域。

仅 SSL 而没有 www 部分很简单:

server {
    if ($host = www.example.com) {
        return 301 https://$host$request_uri;
    }
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}
server {
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    }
    listen 80;
    server_name example.com;
    return 301 http://$server_name$request_uri;
}

但是,如何将固定子域名和通配符子域名与 /admin 路径一起设置?

这是我使用的块示例.com代理人:

server {
        listen 443 ssl http2;
        server_name example.com;

        location / {
                proxy_pass http://localhost:3000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }
        ssl_certificat #...
        ssl_certificat_key #...
}

相关内容