nginx中没有重复configuration的多个域

我有2个域名

  1. exemple.net
  2. exemple.com

和很多子域

  • demo1.exemple.com
  • demo2.exemple.com
  • demo50.exemple.com

目前我有50块这样的:

server { listen 80; server_name demo1.exemple.*; location / { proxy_pass http://127.0.0.1:8081; } } server { listen 80; server_name demo2.exemple.*; location / { proxy_pass http://127.0.0.1:8082; } } 

此解决scheme正在工作,但没有真正优化。

我试图“返回”.com而不是.net,以避免“X”冗余,但我不知道如何包含子域有一个variables。

 server { server_name *.demo.net; return 301 http://demo.com$request_uri; } 

应该有一种方法来尊重nginx的最佳实践,并避免所有这些冗余,但我不知道如何pipe理这个问题。

server_name指令中使用命名捕获。 像这样的东西:

 server { server_name ~^(?<name>.+).example.net$; return 301 http://$name.example.com$request_uri; } 

详情请参阅此文件 。

如果我理解正确,你有不同的端口上提供了很多网站,你已经在NginX中每个服务器块。 如果他们是完全独立的网站,那么这是我想的唯一方法。 但是,如果这些站点都在一个根文件夹下进行服务,则应该只使用一个名称为所有域名的服务器块。

我会因此被烧死,但是我会考虑使用IF来检查域名并根据它redirect用户。 我知道…如果是邪恶!