使用nginx将通配符子域redirect到不同的顶级域名

我们有一堆通配符子域(_foo.example.com,bar.example.com等),当通过HTTPS访问时,应该redirect到我们安全域上的等效子域。

一些例子:

  • https://foo.example.com => https://foo.secure.com
  • https://foo.example.com/some/path => https://bar.secure.com/some/path
  • https://bar.example.com => https://bar.secure.com

我认为这可以用nginx重写来完成,但我不确定语法。 这是我正在尝试:

server { listen 443; server_name *.example.com; rewrite ^(.*) https://*.secure.com$1 permanent; } 

这显然不会工作,因为我没有捕获传入的子域,并在重写中使用它。

尝试像这样(未经测试):

 server { listen 80; listen 443 default ssl; server_name "~^(?<name>\w\d+)\.example\.com$"; rewrite ^(.*) https://$name.secure.com$1 permanent; } 

http://forum.slicehost.com/comments.php?DiscussionID=730找到这&#x4E2A;

 # redirects arbitrary subdomain (some.random.sub.example.com) to (some.random.sub.example.org) if ($host ~* "^([^.]+(\.[^.]+)*)\.example.com$"){ set $subd $1; rewrite ^(.*)$ http://$subd.example.org$1 permanent; break; } # Simply redirects example.com to example.org if ($host ~* "^example.com$"){ rewrite ^(.*)$ http://example.org$1 permanent; break; }